Producing a workout video to control a stationary exercise machine

ABSTRACT

Stationary exercise machine. In one aspect of the disclosure, a stationary exercise machine may include one or more moveable members configured to be moved by a user, an actuator configured to selectively adjust the speed of, or the amount of resistance on, the one or more moveable members, and one or more processors. The one or more processors may be configured to receive a video workout program, execute the video workout program set to a first difficulty level, receive a second difficulty level, and execute the video workout program reset to the second difficulty level.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.17/178,173, filed Feb. 17, 2021, which is a continuation of U.S. patentapplication Ser. No. 16/742,762, filed Jan. 14, 2020, which claims thebenefit of and priority to U.S. Provisional Patent Application No.62/804,685, filed Feb. 12, 2019, and also claims the benefit of, andpriority to, U.S. Provisional Patent Application No. 62/866,576, filedJun. 25, 2019. Each of these applications is incorporated herein byreference in its entirety for all that it discloses.

BACKGROUND

Stationary exercise machines have become an increasingly popular way toexercise. To combat the boredom and burnout that is often experienced byusers that exercise with these exercise machines, exercise machines areoften sold with a number of different pre-programmed workout programsthat are saved within the electronics of the exercise machines. Forexample, these workout programs may include a “fat burn” workoutprogram, a “hills” workout program, a “performance” workout program,and/or other workout programs.

To enable a user to become more immersed in a workout performed on anexercise machine, some exercise machines are capable of executing videoworkout programs. A video workout program generally includes a video aswell corresponding control commands. The video generally depicts atrainer performing a workout. The corresponding control commands, whenexecuted during the display of the video, generally control an exercisemachine to mimic the workout that is depicted in the video as beingperformed by the trainer. For example, where a trainer is running at 6miles per hour in a video of a video workout program, the correspondingcontrol commands of the video workout program may control a running beltof a treadmill to likewise operate at 6 miles per hour.

One problem faced by users attempting to perform a video workout programon an exercise machine is that it can be difficult to maintainsynchronization between the video and the corresponding control commandsin the video workout program. For example, where the video in a videoworkout program experiences a delay, the corresponding control commandsof the video workout program can become unsynchronized from the video,resulting in an incongruity between what a user sees in the video andwhat the user experiences on the exercise machine. For example, wherethe video in a video workout program on a treadmill shows a trainertransitioning from running at 5 miles per hour to 6 miles per hour, ifthe video buffers or experiences some other delay around the time thatthe transition is depicted in the video, the corresponding controlcommands in the video workout program can get ahead of the video,resulting in the running belt of the treadmill speeding up fromoperating at 5 miles per hour to operating at 6 miles per hour prior tothe transition being depicted in the video. This lack of synchronizationbetween a video and corresponding control commands in a video workoutprogram can be unsettling or even dangerous for a user of an exercisemachine and can limit the ability of the user to become sufficientlyimmersed in a workout performed on the exercise machine to effectivelycombat boredom and burnout.

Another problem faced by users attempting to perform a video workoutprogram on an exercise machine is that the fitness level of the user maybe higher or lower than is optimal for the workout being performed inthe video. In these situations, the video workout program may allow auser to manually override the control commands in order to allow theuser to adjust the video workout program to better match the user'sfitness level. Unfortunately, however, requiring adjustments of a videoworkout program to be made manually by the user can detract from theenjoyment of the user and can result in the user inadvertently operatingthe exercise machine at a level that is not optimal for the user'sfitness level. Further, manual adjustment of a video workout program onan exercise machine can result in a lack of integrity between what auser sees in the video and what the user experiences on the exercisemachine. This lack of integrity between the video and themanually-overridden control commands in the video workout program can beunsettling for a user of an exercise machine, and can limit the abilityof the user to become sufficiently immersed in a workout performed onthe exercise machine to effectively combat boredom and burnout.

The subject matter claimed herein is not limited to embodiments thatsolve any disadvantages or that operate only in environments such asthose described above. Rather, this background is only provided toillustrate one example technology area where some embodiments describedherein may be practiced.

SUMMARY

In one aspect of the disclosure, a stationary exercise machine mayinclude one or more moveable members configured to be moved by a user,an actuator configured to selectively adjust the speed of, or the amountof resistance on, the one or more moveable members, and one or moreprocessors. The one or more processors may be configured to receive avideo workout program, execute the video workout program set to a firstdifficulty level, receive a second difficulty level, and execute thevideo workout program reset to the second difficulty level.

It is to be understood that both the foregoing summary and the followingdetailed description are explanatory and are not restrictive of theinvention as claimed.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments will be described and explained with additional specificityand detail through the use of the accompanying drawings in which:

FIG. 1 illustrates a flowchart of an example exercise system forcontrolling an exercise machine using a video workout program;

FIG. 2 illustrates a block diagram of an example exercise machine thatmay be controlled using a video workout program;

FIGS. 3A-3D illustrate video frames and charts that may be employed incontrolling an exercise machine using exercise machine control commandsof a video workout program that are encoded into a subtitle stream of avideo of the video workout program;

FIG. 4A illustrates a chart of a heart rate zones for a user based onthe user's resting heart rate and max heart rate;

FIG. 4B illustrates a chart of programmed heart rate zones for a videoworkout program;

FIGS. 5A-5D illustrate video frames and charts that may be employed indynamically scaling a video workout program on an exercise machine basedon heart rate monitoring;

FIGS. 6A-6B illustrate a flowchart of an example method for controllingan exercise machine using a video workout program; and

FIG. 7 illustrates an example computer system that may be employed incontrolling an exercise machine using a video workout program.

Throughout the drawings, identical reference numbers designate similar,but not necessarily identical, elements.

DETAILED DESCRIPTION

While conventional stationary exercise machines generally includemultiple conventional workout programs that are saved within theelectronics of the exercise machines, these conventional workoutprograms are generally not effective at enabling a user to becomeimmersed in workouts performed on the exercise machines. Therefore, someexercise machines are capable of being updated with video workoutprograms that include a video of a trainer performing a workout, inaddition to corresponding control commands that control the exercisemachine to mimic the workout performed by the trainer in the video. Forexample, where a trainer is running at 6 miles per hour in the video(either along a real-world path, or on a treadmill), the correspondingcontrol commands may control a running belt of a treadmill to likewiseoperate at 6 miles per hour.

Unfortunately, however, it can be difficult to maintain synchronizationbetween the video and the corresponding control commands in a videoworkout program. For example, where the video of a video workout programexperiences a delay due to network limitations, memory limitations, orprocessing limitations, the corresponding control commands can becomeunsynchronized from the video, resulting in an incongruity between whata user sees in the video and what the user experiences on the exercisemachine. For example, where the video in a video workout program on atreadmill shows a trainer transitioning from running at 10 miles perhour to 4 miles per hour, if the video buffers for a few seconds (due tonetwork limitations, memory limitations, or processing limitations)around the time of the transition in the video, the correspondingcontrol commands can get ahead of the video, resulting in the runningbelt of the treadmill slowing down from operating at 10 miles per hourto operating at 4 miles per hour prematurely. In this example, this lackof synchronization between the video and the corresponding controlcommands can be unsettling or even dangerous for a user of the treadmillbecause the running belt can slow down prior to the user expecting therunning belt to slow down, which can limit the ability of the user tobecome sufficiently immersed in a workout performed on the treadmill toeffectively combat boredom and burnout.

Further, the difficulty of maintaining synchronization between the videoand the corresponding control commands in a video workout program can beexacerbated where the video is live and depicts a live event. Forexample, where a video in a video workout program depicts a livemarathon, a user may be able to perform a workout on their treadmill intheir home that mimics the live marathon, at the same time that the livemarathon is occurring at a remote location, which may allow the user tobecome immersed in the workout performed on the treadmill because theuser may feel like they are participating in the live marathon. However,network limitations, memory limitations, or processing limitations mayprevent the video of the video workout program from keeping up, or causethe video to jump ahead, with respect to the actual live marathon, whichmay result in the control commands getting ahead of, or getting behindfrom, the video. This lack of synchronization between the video and thecorresponding control commands can be unsettling or even dangerous forthe user of the treadmill because the running belt can speed up or slowdown before or after the user expects the running belt to speed up orslow down, which can limit the ability of the user to becomesufficiently immersed in the workout performed on the treadmill bypreventing the user from feeling like they are participating in the livemarathon.

Also, in some situations, the fitness level of a user may be higher orlower than is optimal for a workout being performed in a video of avideo workout program. In these situations, the video workout programmay allow a user to manually override the control commands in order toallow the user to adjust the video workout program to better match theuser's fitness level. Continuing with a previous example, where atrainer is running at 6 miles per hour in the video, but the user'sfitness level is high enough that running at 6 miles per hour is tooeasy for the user, the user may manually override the control commandsto control the running belt of the treadmill to operate at 10 miles perhour. Alternatively, where the user's fitness level is low enough thatrunning at 6 miles per hour is too difficult for the user, the user maymanually override the control commands to control the running belt ofthe treadmill to operate at 2 miles per hour. Unfortunately, however,requiring adjustments of a video workout program to be made manually bythe user can detract from the enjoyment of the user and can result inthe user inadvertently operating the exercise machine at a level that isnot optimal for the user's fitness level.

Further, manual adjustment of a video workout program on an exercisemachine can result in a lack of integrity between what a user sees inthe video and what the user experiences on the exercise machine.Continuing with the previous example, where the video on the treadmillshows a trainer running at 6 miles per hour, but the user has manuallyoverridden the control commands to control the running belt of thetreadmill to operate at 2 miles per hour, the video may depict thetrainer running while the user is only walking at a pace that isdramatically slower than the trainer. Alternatively, where the video onthe treadmill shows a trainer running at 6 miles per hour, but the userhas manually overridden the control commands to control the running beltof the treadmill to operate at 10 miles per hour, the video may depictthe trainer running while the user is sprinting at a pace that isdramatically faster than the trainer. This lack of integrity between avideo and manually overridden control commands in a video workoutprogram can be unsettling for a user of an exercise machine and canlimit the ability of the user to become sufficiently immersed in aworkout performed on the exercise machine to effectively combat boredomand burnout.

Some embodiments disclosed herein may include methods for controlling anexercise machine using a video workout program. For example, a methodmay include capturing, remotely from an exercise machine, video, of avideo workout program, depicting performance of a workout. Then, themethod may include encoding, remotely from the exercise machine,exercise machine control commands, of the video workout program, into asubtitle stream (also known as a closed caption stream) of the video.Where the video workout program depicts a live workout, the encoding mayoccur synchronously with the capturing of the video. Alternatively,where the video workout program depicts a pre-recorded workout, theencoding may occur subsequent to the capturing of the video. Then, thevideo workout program may be sent to the exercise machine and the methodmay include various actions performed locally to the exercise machine,such as decoding the subtitle stream of the video to access the exercisemachine control commands, and displaying the video simultaneously withcontrolling one or more moveable members of the exercise machine usingthe exercise machine control commands.

Due to the fact that, in a video, frames from the video are timed with(e.g., linked or tied to) frames of the subtitle stream, the encoding ofcontrol commands in a subtitle stream of a video may maintainsynchronization of the video and of corresponding control commands. Thissynchronization between a video and corresponding control commands canenable a user to become sufficiently immersed in a workout performed onthe exercise machine to avoid the boredom and burnout that is oftenexperienced by users of exercise machines.

Also, in another example of methods for controlling an exercise machineusing a video workout program, a method may include executing a videoworkout program at an exercise machine, continuously monitoring anactual heart rate of a user, and periodically determining at least thatan actual heart rate zone of the user is not equal to a currentprogrammed heart rate zone of the video workout program. The method mayalso include periodically determining that the actual heart rate of theuser is not trending toward the current programmed heart rate zone by atleast a threshold heart rate trend rate. In response, the method mayfurther include adaptively scaling the video workout program byadjusting the current difficulty level upward if the actual heart ratezone is lower than the current programmed heart rate zone, or downwardif the actual heart rate zone is higher than the current programmedheart rate zone.

By monitoring not only the user's current heart rate but also thedirection and speed at which the user's heart rate is trending (e.g.,the slope of the user's heart rate), some embodiments may avoid changingthe current difficulty level too often. Further, in some embodiments,the changes to the current difficulty level can be limited to avoidbeing changed too dramatically in order to avoid the current difficultylevel experienced by the user from being dramatically different from thedifficulty level that the user sees in the video. As a result of thecurrent difficulty level not being changed too often and/or toodramatically, the enjoyment of the user may be increased, theinadvertent operation of the exercise machine at a level that is notoptimal for the user's fitness level may be avoided, and/or theintegrity between the workout of the trainer shown in the video and theactual workout performed by the user can be maintained, thus enabling auser to become sufficiently immersed in the workout performed on theexercise machine to avoid the boredom and burnout that is oftenexperienced by users of exercise machines.

Turning now to the drawings, FIG. 1 illustrates a flowchart of anexample exercise system 100 for controlling an exercise machine using avideo workout program. The exercise system 100 may include a remotelocation 102 and a local location 104 connected by a network 118.

In some embodiments, the network 118 may be configured tocommunicatively couple the any two devices in the exercise system 100 toone another, and/or to other devices. In some embodiments, the network118 may be any wired or wireless network, or combination of multiplenetworks, configured to send and receive communications between systemsand devices. In some embodiments, the network 118 may include a PersonalArea Network (PAN), a Local Area Network (LAN), a Metropolitan AreaNetwork (MAN), a Wide Area Network (WAN), a Storage Area Network (SAN),the Internet, or some combination thereof. In some embodiments, thenetwork 118 may also be coupled to, or may include, portions of atelecommunications network, including telephone lines, for sending datain a variety of different communication protocols, such as a cellularnetwork or a Voice over IP (VoIP) network.

In the remote location 102, the exercise system 100 may include a videocamera 106 a or 106 b that may be employed to capture video of a trainer108 a or 108 b performing a workout, and which includes stabilizationcapabilities to avoid the captured video from being unduly shaky. Forexample, the video camera 106 a may be employed by a videographer 110 ato capture video of the trainer 108 a performing a workout in which thetrainer 108 a runs a live marathon. Similarly, the video camera 106 bmay be employed by a videographer 110 b to capture video of the trainer108 b performing a workout in which the trainer 108 b rides a bicycle ina live road bicycle race. In either example, the result may be capturedvideo that can be sent to a remote server 112 for further processing.The video may be formatted in any one of multiple video formats, atleast some of which being capable of supporting a subtitle stream. Someexample formats may include, but are not limited to, MPEG-4, DynamicAdaptive Streaming over HTTP (MPEG-DASH), and HTTP Live Streaming (HLS).

Next, a producer (not shown) may utilize a computer 114 to inputexercise machine control commands for the video into a video workoutprogram, which may be encoded into a subtitle stream of the video, ormay be encoded separately from the video. For example, where the videois being produced to be utilized as a live video workout program, theproducer may input the exercise machine control commands using thecomputer 114 synchronously with the videographer 110 a or 110 b usingthe video camera 106 a or 106 b to capture video of the trainer 108 a or108 b performing the workout (e.g., during a live event). In thisexample, the producer may also give corresponding instructions to thetrainer, such as through an earpiece worn by the trainer, in order tohelp the trainer and the producer be in sync following a common scriptor plan for the workout. Alternatively, where the video is produced tobe utilized in a pre-recorded video workout program, the producer mayinput exercise machine control commands using the computer 114subsequent to the videographer 110 a or 110 b using the video camera 106a or 106 b to capture video of the trainer 108 a or 108 b (e.g.,minutes, hours, or days after the live event).

In some embodiments, the control commands may be encoded into a subtitlestream of the video, which may be a subtitle stream that is not commonlyused. For example, where a first subtitle stream (e.g., subtitlestream 1) is commonly used for English subtitles, and a second subtitlestream (e.g., subtitle stream 2) is commonly used for Spanish subtitles,but a third subtitle stream (e.g., subtitle stream 3) is commonly notused, the third subtitle stream (e.g., subtitle stream 3) may be usedfor encoding exercise machine control commands. The video workoutprogram, including the captured video and the control commands (whichmay be encoded in the subtitle stream of the video, or may be encodedseparately from the video) may then be transmitted over the network 118from the remote server 112 in the remote location 102 to a local server116 in the local location 104.

The video workout program may then be transmitted from the local server116 to be used in connection with an exercise machine 120 a, 120 b, 120c, or 120 d. For example, the video workout program may be transmittedfrom the local server 116 to a console 122 a, 122 b, 122 c, or 122 d ofthe exercise machine 120 a, 120 b, 120 c, or 120 d, which may include adisplay, such as a touchscreen display. Alternatively, a separate tablet124 may function as a console, or may function in connection with aconsole, of the exercise machine 120 a, 120 b, 120 c, or 120 d, and mayalso include a display, such as a touchscreen display. The tablet 124may communicate with the console 122 a, 122 b, 122 c, or 122 d, and/orwith the exercise machine 120 a, 120 b, 120 c, or 120 d, via a networkconnection, such as a Bluetooth connection. In either example, the videoand the control commands (which may be encoded in the subtitle stream ofthe video) may be decoded and/or accessed. Then, the console 122 a, 122b, 122 c, or 122 d and/or the tablet 124 may display the video from thevideo workout program (e.g., of the trainer 108 a or 108 b performingthe marathon or the road bicycle race at the remote location 102) whilesimultaneously controlling one or more moveable members of the exercisemachine 120 a, 120 b, 120 c, or 120 d using the control commands.

In embodiments where the control commands are encoded in the subtitlestream of the video, due to the fact that, in a video, frames from thevideo are timed with frames of a subtitle stream, the encoding ofcontrol commands in a subtitle stream maintains synchronization of thevideo and of corresponding control commands. This synchronization in avideo workout program between the video and the corresponding controlcommands can enable a user to become immersed in a workout on theexercise machine 120 a, 120 b, 120 c, or 120 d, which may help the userto avoid the boredom and burnout that is often experienced by users ofexercise machines.

Further, during performance of a workout by a user 109 using the videoworkout program on the exercise machine 120 a, 120 b, 120 c, or 120 d, aheart rate of the user 109 may be monitored by the console 122 a, 122 b,122 c, or 122 d, and/or the tablet 124. This heart rate monitoring maybe accomplished by receiving continuous heart rate measurementswirelessly (such as over Bluetooth or Ant+) from a heart rate monitoringdevice worn by the user 109, such as a heart rate strap 111 b or a heartrate watch 111 a, or other wearable heart rate monitor. Alternatively,the heart rate monitoring device may be built into another device, suchas being built into handlebars or handgrips of the exercise machine 120a, 120 b, 120 c, or 120 d.

The exercise machine 120 a is illustrated in FIG. 1 as a treadmill. Thetreadmill 120 a may include multiple different moveable members,including a running belt 126 a and a running deck 126 b, which mayinclude one or more operating parameters that are selectively adjustablewithin a limited range. During performance of a workout using a videoworkout program on the treadmill 120 a, the running belt 126 a mayrotate and the running deck 126 b may incline. One example of anoperating parameter on the treadmill 120 a is a speed of the runningbelt 126 a. The running belt 126 a may rotate at different speeds withina limited range. An actuator (see FIG. 2), for example a belt motor, mayselectively adjust the speed at which the running belt 126 a rotateswithin the limited range. Another example of an operating parameter onthe treadmill 120 a is the inclination of running deck 126 b. Therunning deck 126 b may be selectively inclinable to different angleswithin a limited range. An actuator, for example an incline motor, mayselectively adjust the incline of the running deck 126 b within thelimited range.

The exercise machine 120 b is illustrated in FIG. 1 as an ellipticalmachine. The elliptical machine 120 b may include multiple differentmoveable members, including a flywheel 126 c, foot rails or pedals 126d, and handles 126 e, which include one or more operating parametersthat are selectively adjustable within a limited range. Duringperformance of a workout using a video workout program on the ellipticalmachine 120 b, movement of the foot rails or pedals 126 d and thehandles 126 e may cause the flywheel 126 c to rotate. One example of anoperating parameter on the elliptical machine 120 b is the amount ofresistance applied to the flywheel 126 c. A differing amount ofresistance can be applied to the flywheel 126 c to make the movement ofthe foot rails or pedals 126 d and the handles 126 e more difficult orless difficult. An actuator, such as a brake, may be used to selectivelyadjust the amount of resistance that is applied to the flywheel 126 c.Another example of an operating parameter on the elliptical machine 120b is the inclination of foot rails or pedals 126 d. The foot rails orpedals 126 d may be inclinable to different angles within a limitedrange. An actuator, such as an incline motor, may selectively adjust theincline of the foot rails or pedals 126 d within the limited range. Yetanother example of an operating parameter on exercise machine 120 b isthe stride length of the foot rails or pedals 126 d and/or the handles126 e. The stride length of the foot rails or pedals 126 d and/or thehandles 126 e may be adjustable to different distances within a limitedrange. An actuator, for example a stride length motor, may selectivelyadjust the stride length of the foot rails or pedals 126 d and/or thehandles 126 e within the limited range.

The exercise machine 120 c is illustrated in FIG. 1 as an exercise bike.The exercise bike 120 c may include multiple different moveable members,including a flywheel 126 f, pedals 126 g, and a frame 126 h, whichinclude one or more operating parameters that are selectively adjustablewithin a limited range. During performance of a workout using a videoworkout program on the exercise bike 120 c, movement of the pedals 126 gmay cause the flywheel 126 f to rotate. One example of an operatingparameter on the exercise bike 120 c is the amount of resistance appliedto the flywheel 126 f. A differing amount of resistance can be appliedto the flywheel 126 f to make rotation of the pedals 126 g moredifficult or less difficult. An actuator, such as a brake, may be usedto selectively adjust the amount of resistance that is applied to theflywheel 126 f within the limited range. Another example of an operatingparameter on the exercise bike 120 c is the position of the frame 126 h.The frame 126 h may tilt forward, backward, or from side to side withina limited range. An actuator, such as a tilt motor, may selectivelyadjust the position of the frame 126 h within the limited range.

The exercise machine 120 d is illustrated in FIG. 1 as a rower machine.The rower machine 120 d may include multiple different moveable members,including a flywheel 126 i, a rowbar 126 j, and a seat 126 k, whichinclude one or more operating parameters that are selectively adjustablewithin a limited range. During performance of a workout using a videoworkout program on the rower machine 120 d, movement of the rowbar 126 jmay cause the flywheel 126 i to rotate. One example of an operatingparameter on the rower machine 120 d is the amount of resistance appliedto the flywheel 126 i. A differing amount of resistance can be appliedto the flywheel 126 i to make pulling on the rowbar 126 j more difficultor less difficult. An actuator, such as a brake, may be used toselectively adjust the amount of resistance that is applied to theflywheel 126 i within the limited range.

FIG. 2 illustrates a block diagram of an example exercise machine 120that may be controlled using a video workout program. The exercisemachine 120 of FIG. 2 may represent, and may include similar componentsto, any of the exercise machine 120 a, 120 b, 120 c, or 120 d of FIG. 1,for example.

As disclosed in FIG. 2, the exercise machine 120 may include aprocessing unit 150, a receiving port 152, an actuator 154, and amoveable member 126. The moveable member 126, which may be similar toany of the moveable members 126 a-126 k of FIG. 1, for example. Theprocessing unit 150 may be communicatively connected to the receivingport 152 and may be included within a console 122, which may be similarto any of the consoles 122 a, 122 b, 122 c, or 122 d of FIG. 1, forexample. The processing unit 150 may also be communicatively connectedto the actuator 154. In response to control commands executed by theprocessing unit 150, the actuator 154 may selectively adjust one or moreoperating parameters of the moveable member 126 within a limited range.

Data, including data in a video workout program, can be received by theexercise machine 120 through the receiving port 152. As statedpreviously, a video workout program may include video as well as controlcommands. Control commands may provide control instructions to anexercise machine (such as a treadmill, an elliptical machine, anexercise bike, or a rower machine). Control commands may include, forexample, control commands for a belt motor, an incline motor, and otheractuators. In addition to actuator control commands, control commandsmay further include distance control commands, time control commands,and/or heart rate zone control commands. These control commands mayprovide a series of actuator control commands for execution at specifictimes or at specific distances. For example, a control command for anactuator to be at a certain level for a specific amount of time or for aspecific distance. These control commands may also provide a series ofactuator control commands for execution at specific times or at specificdistances based on a user's monitored heart rate or heart rate trendsover time. For example, a control command for an actuator may dictate acertain heart rate zone for a certain amount of time or distance, and adifficulty level of this control command may be dynamically scaled basedon a user's monitored heart rate in order to get or keep the user in thecertain heart rate zone for the certain amount of time or distance.

Using a control command, received at the receiving port 152 in a videoworkout program, such as a control command that is decoded from asubtitle stream of a video of a video workout program for example, theprocessing unit 150 may control the actuator 154 on the exercise machine120 in the sequence and at the times or distances specified by thecontrol command. For example, actuator control commands that provide theprocessing unit 150 with commands for controlling a belt motor, anincline motor, a flywheel brake, stride length motor, or anotheractuator may be included in the control commands received in a videoworkout program at the exercise machine 120.

Actuator control commands can be received for different time segments ordistance segments of a workout. For example, a ten minute workout mayhave twenty different control commands that provide the processing unit150 with a different control command for controlling an actuator everythirty seconds. Alternatively, a ten mile workout may have twentydifferent control commands that provide a processing unit with adifferent control command for controlling an actuator every half mile.Workouts may be of any duration or distance and different controlcommands may be received at any time or distance during the workout.Alternatively, a 5 minute workout may have 300 different controlcommands that provide the processing unit 150 with a different controlcommand for controlling an actuator once per second.

The control commands received in a video workout program at the exercisemachine 120 may be executed by the processing unit 150 in a number ofdifferent ways. For example, the control commands may be received andthen stored into a read/write memory that is included in the processingunit 150. Alternatively, the control commands may be streamed to theexercise machine 120 in real-time. The control commands may also bereceived and/or executed from a portable memory device, such as a USBmemory stick or an SD card.

Video workout programs may include a plurality of control commands thatprovide instructions for different types of exercise machines. Forexample, a video workout program may include a first set of controlcommands for controlling a belt motor and an incline motor on atreadmill, as well as a second set of control commands for controlling aflywheel brake, an incline motor, and a stride length motor of anelliptical machine. Where the exercise machine 120 is a treadmill, theprocessing unit 150 of the exercise machine 120 may be configured torecognize and select the first set of control commands that providesinstructions for a treadmill, while ignoring the second set of controlcommands that provides instructions for an elliptical machine.Similarly, where the exercise machine 120 is an elliptical machine, theprocessing unit 150 of the exercise machine 120 may be configured torecognize and select the second set of control commands that providesinstructions for an elliptical machine, while ignoring the first set ofcontrol commands that provides instructions for a treadmill.

In addition to recognizing and selecting the compatible set of controlcommands, the processing unit 150 may also apply a sizing restriction tocontrol commands before the control commands can be executed by theexercise machine 120. As with recognizing the compatible set of controlcommands, the processing unit 150 may use reference data to determinewhether a sizing restriction is necessary and, if so, apply the sizingrestriction. Application of a sizing restriction to compatible controlcommands may be necessary due to the fact that the moveable members 126on the exercise machine 120 have operating parameters that areadjustable only within a limited range. Thus, even if two exercisemachines have the same type of actuator (i.e., both a treadmill and anelliptical machine may have incline motors), sets of control commandsfor that actuator may not be compatible with both exercise machines.

FIGS. 3A-3D illustrate video frames and charts that may be employed incontrolling an exercise machine using exercise machine control commandsof a video workout program that are encoded into a subtitle stream of avideo of the video workout program. In particular, FIGS. 3A-3Dillustrate frames 300 a-300 d of video captured by the videographer 110a (see FIG. 1) of the trainer 108 a performing a workout, which mayinclude running a marathon along a path 306. Further, FIGS. 3A-3D alsoillustrate data charts 302 a-302 d which contain certain relevant dataparameters gathered during the workout at the same time that thecorresponding frame of video is captured, manually or automaticallyusing one or more sensors, for example. Finally, FIGS. 3A-3D alsoillustrate comma separated values (CSV) encoding charts 304 a-304 dshowing how the data parameters from the data charts 302 a-302 d istranslated and encoded into control commands.

The frames 300 a-300 d of video captured of the trainer 108 a runningthe marathon represent frames of video captured in succession, onesecond apart. It is understood, however, that other intervening framesof video may also be captured, such as 29 intervening frames of videobetween each of the successive frames 300 a-300 d, resulting in acaptured video having 30 frames per second. The reason that only oneframe per second are illustrated in the frames 300 a-300 d of video isbecause the encoding of control commands of a video workout program intoa subtitle stream of a video of the video workout program may only occuronly once per second in the example encoding disclosed in FIGS. 3A-3D.Other encoding rates are also possible, such as encoding twice persecond or four times per second, for example. In some embodiments, theencoding rate may be up to as many times per second as there are framesper second (e.g., where the frame rate is 30 frames per second, theencoding rate may up to 30 times per second).

As disclosed in the frame 300 a of FIG. 3A, the trainer 108 a may beperforming a workout by running a marathon along the path 306. Asdisclosed in the data chart 302 a, at the time that the frame 300 a iscaptured by a video camera, 605 seconds may have transpired since thestart of the workout, the trainer 108 a may be running at a pace of 6miles per hour up a 0.5% incline, the trainer 108 a may currently be ina heart rate zone 3 with a heart rate of 150 beats per minute, and maybe in a workout state of “In Workout” (as opposed to a workout state of“Warmup” or “Cool Down”). As disclosed in the CSV encoding chart 304 a,the data parameters from the data chart 302 a may be encoded into a CSVencoding 305 a in a subtitle stream of a video, which is timed with(e.g., linked or tied to) the frame 300 a, as “605,6,0.5,0,0,0,3,150,1”,which represents 605 seconds since the start of the workout, a speed of6 miles per hour, a 0.5% incline, resistance being non-applicable (withN/A being represented by a 0), a target revolutions per minute beingnon-applicable (with N/A being represented by a 0), a target watts beingnon-applicable (with N/A being represented by a 0), a target heart ratezone of 3, a target heart rate of 150, and a workout state of 1 (whichrepresents a workout state of “In Workout”). In some embodiments, theCSV encoding 305 a may have all values separated by a comma, may haveall values be numbers (e.g., numbers between −99999.0 to 99999.0), maynot have spaces between values, may encode values in order (e.g., sothat the position of each value can be used to interpret the meaning ofeach value), and may allow for a new value if the new value is appendedat the end of the CSV encoding.

As disclosed in the frame 300 b of FIG. 3B, the trainer 108 a maycontinue performing the workout by running the marathon along the path306. As disclosed in the data chart 302 b, at the time that the frame300 b is captured by a video camera, 606 seconds may have transpiredsince the start of the workout (e.g. one additional second hastranspired since the frame 300 a was captured), the trainer 108 a maystill be running at a pace of 6 miles per hour up a 0.5% incline, thetrainer 108 a may still be in heart rate zone 3 but with an increasedheart rate of 152 beats per minute, and may still be in a workout stateof “In Workout.” As illustrated in frame 300 b, the trainer 108 a may beapproaching a transition 308 in the path 306 where the inclinetransitions from a relatively gradual 0.5% incline to a relatively steep4.5% incline. As disclosed in the CSV encoding chart 304 b, the dataparameters from the data chart 302 b may be encoded into a CSV encoding305 b in a subtitle stream of a video, which is timed with frame 300 b,as “606,6,0.5,0,0,0,3,152,1”.

As disclosed in the frame 300 c of FIG. 3C, the trainer 108 a maycontinue performing the workout by running the marathon along the path306. As disclosed in the data chart 302 c, at the time that the frame300 c is captured by a video camera, 607 seconds may have transpiredsince the start of the workout (e.g. one additional second hastranspired since the frame 300 b was captured, and two additionalseconds have transpired since the frame 300 a was captured), the trainer108 a may now have slowed to running at a pace of 5 miles per hour up a4.5% incline, the trainer 108 a may still be in heart rate zone 3 butwith an increased heart rate of 156 beats per minute, and may still bein a workout state of “In Workout.” As illustrated in frame 300 c, thetrainer 108 a may have crossed over the transition 308 in the path 306where the incline transitions from the relatively gradual 0.5% inclineto the relatively steep 4.5% incline, which may account for the slowerspeed and increased heart rate of the trainer 108 a. As disclosed in theCSV encoding chart 304 c, the data parameters from the data chart 302 cmay be encoded into a CSV encoding 305 c in a subtitle stream of avideo, which is timed with the frame 300 c, as“607,5,4.5,0,0,0,3,156,1”.

As disclosed in the frame 300 d of FIG. 3D, the trainer 108 a maycontinue performing the workout by running the marathon along the path306. As disclosed in the data chart 302 d, at the time that the frame300 d is captured by a video camera, 608 seconds may have transpiredsince the start of the workout (e.g. one additional second hastranspired since the frame 300 c was captured, two additional secondshave transpired since the frame 300 b was captured, and three additionalseconds have transpired since the frame 300 a was captured), the trainer108 a may still be running at a pace of 5 miles per hour up a 4.5%incline, the trainer 108 a may still be in heart rate zone 3 but with anincreased heart rate of 160 beats per minute, and may still be in aworkout state of “In Workout.” As disclosed in the CSV encoding chart304 d, the data parameters from the data chart 302 d may be encoded intoa CSV encoding 305 d in a subtitle stream of a video, which is timedwith the frame 300 d, as “608,5,4.5,0,0,0,3,160,1”.

Due to the fact that, in a video, the frames 300 a-300 d from the videoare timed with frames of the subtitle stream, the encoding of controlcommands in a subtitle stream, such as in the CSV encodings 305 a-305 dillustrated in the CSV encoding charts 304 a-304 d, maintainssynchronization of the video of a video workout program and ofcorresponding control commands of the video workout program. Forexample, even if the video is buffered or otherwise delayed, thesubtitle stream will also be buffered or otherwise delayed by anidentical amount, which will maintain synchronization of the video andof corresponding control commands. This synchronization between a videoand corresponding control commands in a video workout program can enablea user to become immersed in a workout on the exercise machine, whichmay help the user to avoid the boredom and burnout that is oftenexperienced by users of exercise machines.

FIG. 4A illustrates a chart 400 of a heart rate zone for a user 109based on the resting heart rate and max heart rate of the user 109. Thedifference between the max heart rate and the resting heart rate of theuser 109 is known as a heart rate reserve (HRR). Some embodiments mayemploy heart rate reserved to calculate heart rate zones, rather thanusing a simple percentage of max heart rate, which may allow for zonesto be calculated just on the values that the heart actual capable ofbeating at. As disclosed in the chart 400, the user 109 may have ameasured or estimated resting heart rate of 65 beats per minute (BPM) aswell as a measured or estimated max heart rate of 185 BPM. Based onthese two data points, five heart rate zones for the user 109 may becalculated. In particular, as illustrated in the chart 400, each heartrate zone may be associated with a particular range of heart rates, suchas 96-114 BPM for heart rate Zone 1, or 173-192 BPM for heart rate Zone5. In some embodiments, prior to performing a video workout program, theresting heart rate as well as the max heart rate of a user may beobtained in order to calculate heart rate Zone 1 to heart rate Zone 5.Due to the fact that the resting heart rate and the max heart rate mayvary from user to user, the calculated heart rate Zone 1 to heart rateZone 5 may also vary from user to user.

In some embodiments, the resting heart rate and max heart rate in thechart 400 may be measured or estimated. For example, even though restingheart rate and max heart rate may be initially estimated for the user109, the user 109 may be allowed to override the initial estimatedvalues if the user 109 knows their resting heart rate or max heart rate.Further, instructions may be provided to the user 109 regarding how toproperly measure or test their resting heart rate and/or max heart rate.For example, the treadmill 120 a of FIG. 1 may be configured to providea test that can be performed on the treadmill 120 a to accurately testthe max heart rate of the user 109. This may be a graded test that getsprogressively harder until the user 109 hits their max heart rate. Theuser 109 may perform the test for as long as they can. When the user 109ends the test, the treadmill 120 a may automatically save the max heartrate of the user 109, and then recompute the heart rate zones shown inthe chart 400 for the user 109. Similarly, anytime the user 109 adjuststheir resting heart rate or max heart rates, the heart rate zones of theuser 109 may be automatically shifted to reflect those new values. Also,it is noted that a max heart rate for a user 109 may be different fordifferent exercise modalities, such as for difference exercise machines.For example, a max heart rate for the user 109 may be lower on the rowermachine 120 d (e.g., because it is not a weight bearing exercisemachine) than on the treadmill 120 a (because it is a weight bearingexercise machine). Therefore, for any given user, a difference max heartrate may be used for different exercise modalities.

FIG. 4B illustrates a chart 450 of programmed heart rate zones for avideo workout program. As disclosed in the chart 450, the video workoutprogram may include multiple programmed heart rate zones (i.e., zone 2to zone 5, or Z2 to Z5) corresponding to the depiction of the trainer inthe video. In particular, the programmed heart rate zone transitionsfrom zone 2, to zone 4, to zone 5, to zone 4, to zone 2, to zone 3, tozone 2, to zone 4, to zone 2, to zone 4, to zone 5, and to zone 4. Eachof the transitions may occur at a particular time during the videoworkout program, and may correspond to a commensurate change in theheart rate zone of the trainer shown in the video of the video workoutprogram. In order to enable the exercise machine to automatically andadaptively scale the current difficulty level of the video workoutprogram so that the user's heart rate zone tracks closely to theprogrammed heart rate zones, the user's heart rate may be continuallymonitored. Further, the trends of the user's heart rate may also betaken into consideration in order to avoid the current difficulty levelfrom being changed too often and/or too dramatically.

FIGS. 5A-5D illustrate video frames and data charts that may be employedin dynamically scaling a video workout program on an exercise machinebased on heart rate monitoring. In particular, FIGS. 5A-5D illustrateframes 500 a-500 d of video captured by the videographer 110 a (seeFIG. 1) of the trainer 108 a performing a workout, which may includerunning a marathon along a path 506. Further, FIGS. 5A-5D alsoillustrate data charts 502 a-502 d which contain certain relevant dataparameters. These data parameters may be gathered during the workout atthe same time that the corresponding frame of video is captured, or maybe gathered at or around the time that the corresponding frame of videois displayed. These data parameters may be gathered manually, bylistening to voice commands of the trainer 108 a for example. These dataparameters may alternatively be gathered automatically, using one ormore sensors for example.

Finally, FIGS. 5A-5D also illustrate widgets 508 a-508 d and 510 a-510 dwhich may overlay the frames 500 a-500 d, respectively, when dynamicscaling based on heart rate monitoring is active during a workout. Insome embodiments, the dynamic scaling can be toggled on and off by auser using, for example, a “Smart HR Training” control. Further, in someembodiments, the chart 400 of FIG. 4A may be displayed when a userselects the header of any of the widgets 508 a-508 d or 510 a-510 d.

The frames 500 a-500 d of a video, which show the trainer 108 a runningthe marathon, represent frames of video captured over time. It isunderstood, however, that other intervening frames of video may also becaptured between each of the frames 500 a-500 d, resulting in a capturedvideo having additional frames (e.g., with a frame rate of 24, 30, or 60frames per second).

As disclosed in the frame 500 a of FIG. 5A, the trainer 108 a may beperforming a workout by running a marathon along the path 506. Asdisclosed in the data chart 502 a, at the time that the frame 500 a iscaptured by the video camera 106 a (see FIG. 1), the trainer 108 a maybe performing, and/or may direct that a user perform, the workout at acurrent programmed heart rate zone of zone 2, which for the user 109 ofFIG. 4A corresponds to a personalized current programmed heart rate zonerange of 115-134 BPM. As illustrated in the heart rate training widget508 a and in the data chart 502 a, the previous programmed heart ratezone was zone 4, the time since the workout began is 450 seconds, thetime since the most recent zone change is 70 seconds, the time remainingin the current programmed heart rate zone is 50 seconds, and the timeremaining in the workout is 1350 seconds. As disclosed in the data chart502 a, the heart rate monitoring rate is once per second, the thresholdheart rate trend rate is −5 seconds, the warmup time threshold is 180seconds, and the user's last ten actual heart rates (in BPM) are 122,122, 123, 123, 124, 124, 125, 124, 125, and 125. Also disclosed in thedata chart 502 a, the baseline difficulty level is B₀ with a baselinespeed of 4 MPH, while the current difficulty level is B₂ with a currentspeed of 4.3 MPH. Finally, the data chart 502 a also discloses that theuser's actual heart rate is 125 BPM, which corresponds to the user'sactual heart rate zone of zone 2, and the user's actual heart rate zonerange of 115-134 BPM. Some or all of the data in data chart 502 a may beemployed to determine that the current difficulty level of the videoworkout program, of which the frame 500 a is a part, should not bedynamically scaled because the user is already performing in the properzone (i.e., zone 2).

As disclosed in the frame 500 b and data chart 502 b of FIG. 5B, thetrainer 108 a may be performing, and/or may direct that a user perform,the workout at a current programmed heart rate zone of zone 3, which forthe user 109 of FIG. 4A corresponds to a personalized current programmedheart rate zone range of 135-153 BPM. As illustrated in the heart ratetraining widget 508 b and in the data chart 502 b, the previousprogrammed heart rate zone was zone 2, the time since the workout beganis 675 seconds, the time since the most recent zone change is 60seconds, the time remaining in the current programmed heart rate zone is60 seconds, and the time remaining in the workout is 1125 seconds. Asdisclosed in the data chart 502 b, the heart rate monitoring rate isonce per second, the threshold heart rate trend rate is +4 seconds, thewarmup time threshold is 180 seconds, and the user's last ten actualheart rates (in BPM) are 152, 152, 153, 153, 154, 154, 155, 155, 155,and 155. Also disclosed in the data chart 502 b, the baseline difficultylevel is B₀ with a baseline speed of 6 MPH, while the current difficultylevel is B₂ with a current speed of 6.7 MPH. Finally, the data chart 502b also discloses that the user's actual heart rate is 155 BPM, whichcorresponds to the user's actual heart rate zone of zone 4, and theuser's actual heart rate zone range of 154-172 BPM. Some or all of thedata in data chart 502 b may be employed to determine that the currentdifficulty level of the video workout program, of which the frame 500 bis a part, should be dynamically scaled downward to move the user intothe proper zone (i.e., from heart rate zone 4 to heart rate zone 3).

As disclosed in the frame 500 c and data chart 502 c of FIG. 5C, thetrainer 108 a may be performing, and/or may direct that a user perform,the workout at a current programmed heart rate zone of zone 2, which forthe user 109 of FIG. 4A corresponds to a personalized current programmedheart rate zone range of 115-134 BPM. As illustrated in the heart ratetraining widget 508 c and in the data chart 502 c, the previousprogrammed heart rate zone was zone 3, the time since the workout beganis 810 seconds, the time since the most recent zone change is 50seconds, the time remaining in the current programmed heart rate zone is70 seconds, and the time remaining in the workout is 990 seconds. Asdisclosed in the data chart 502 c, the heart rate monitoring rate isonce per second, the threshold heart rate trend rate is −4 seconds, thewarmup time threshold is 180 seconds, and the user's last ten actualheart rates (in BPM) are 131, 131, 132, 133, 133, 134, 135, 136, 136,and 137. Also disclosed in the data chart 502 c, the baseline difficultylevel is B₀ with a baseline speed of 4 MPH, while the current difficultylevel is B₁ with a current speed of 4.2 MPH. Finally, the data chart 502c also discloses that the user's actual heart rate is 137 BPM, whichcorresponds to the user's actual heart rate zone of zone 3 and theuser's actual heart rate zone range of 135-153 BPM. Some of all of thedata in data chart 502 c may be employed to determine that the currentdifficulty level of the video workout program, of which the frame 500 cis a part, should be dynamically scaled downward to move the user intothe proper zone (i.e., from heart rate zone 3 to heart rate zone 2).

As disclosed in the frame 500 d and data chart 502 d of FIG. 4D, thetrainer 108 a may be performing, and/or may direct that a user perform,the workout at a current programmed heart rate zone of zone 4, which forthe user 109 of FIG. 4A corresponds to a personalized current programmedheart rate zone range of 154-172 BPM. As illustrated in the heart ratetraining widget 508 d and in the data chart 502 d, the previousprogrammed heart rate zone was zone 2, the time since the workout beganis 1020 seconds, the time since the most recent zone change is 120seconds, the time remaining in the current programmed heart rate zone is120 seconds, and the time remaining in the workout is 780 seconds. Asdisclosed in the data chart 502 d, the heart rate monitoring rate isonce per second, the threshold heart rate trend rate is +5 seconds, thewarmup time threshold is 180 seconds, and the user's last ten actualheart rates (in BPM) are 148, 147, 148, 149, 149, 149, 150, 150, 150,and 150. Also disclosed in the data chart 502 d, the baseline difficultylevel is B₀ with a baseline speed of 8 MPH, and the current difficultylevel is also B₀ with a current speed of 8 MPH. Finally, the data chart502 d also discloses that the user's actual heart rate is 150 BPM, whichcorresponds to the user's actual heart rate zone of zone 3, and theuser's actual heart rate zone range of 135-153 BPM. Some of all of thedata in data chart 502 d may be employed to determine that the currentdifficulty level of the video workout program, of which the frame 500 bis a part, should be dynamically scaled upward to move the user into theproper zone (i.e., from heart rate zone 3 to heart rate zone 4).

During the video workout program in which the heart rate training widget508 a-508 d are displayed to the user 109, two states are displayed,namely, (1) a programmed state 509 which displays the programmed heartrate zone for the entire video workout program, and (2) a historicalstate 511 a-511 d which shows the historical heart rate zone (and/or thecorresponding heart rate) of the user from the beginning of the videoworkout program to the current point in time in the video workoutprogram. These two displayed states enable the user to track theiractual heart rate performance (using the historical state 511 a-511 d)against the programmed heart rate performance (using the programmedstate 509) for the video workout program.

During the video workout program in which the frames 500 a-500 d fromthe video are displayed to the user 109, the current difficulty levelmay be dynamically scaled based on the monitored heart rate of the user109 of FIG. 4A. However, due to the fact that the direction and speed atwhich the heart rate of the user 109 is trending is also beingcontinually monitored, the video workout program may avoid changing thecurrent difficulty level too often and/or too dramatically. Thus, theenjoyment of the user 109 may be increased, the inadvertent operation ofthe exercise machine (e.g., the treadmill 120 a of FIG. 1) at adifficulty level that is not optimal for the fitness level of the user109 may be avoided, and the integrity between the workout of the trainer108 a shown in the frames 500 a-500 d from the video and the actualworkout performed by the user 109 can be maintained, thus increasing theability of the user 109 to become more immersed in the workout on theexercise machine.

FIGS. 6A-6B illustrates a flowchart of an example method 600 forcontrolling an exercise machine using a video workout program. Themethod 600 may be performed, in some embodiments, by one or moreapplications, devices, or systems, such as by the video cameras 106a-106 b, the computer 114, the remote server 112, the local server 116,the exercise machines 120 a-120 d, the consoles 122 a-122 d, and/or thetablet 124, or some combination thereof. In these and other embodiments,the method 600 may be performed by one or more processors based on oneor more computer-readable instructions stored on one or morenon-transitory computer-readable media. The method 600 will now bedescribed in connection with FIGS. 1, 2, 3A-3D, 4A-4B, 5A-5D, and 6.

Prior to the method 600, a user may be subscribed to a subscriptionservice (e.g., an IFIT account) that allows the user to have access tovideo workout programs. This subscription service may store userprofile, as well as history information related to a user's sleep,nutrition, stress levels, exercise, wellness, and activity levels (whichmay be gathered automatically via sensors, or manually entered by theuser). This profile and history information may be accessed to recommendparticular video workout programs that will best help a user to achievefitness goals set by the user or automatically generated for the user.By providing high quality video workout programs, a user may beincentivized to continue subscribing, and a retention rate forsubscribers may be positively impacted. Further, some video workoutprograms created using the method 600 may be accessed by user using apay-per-view model rather than an ongoing subscription model. Forexample, a pay-per-view model may be appropriate for rare events orclasses, or for one-on-one training sessions between a single trainerand a single user.

Further, prior to the method 600, a pre-roll video of a video workoutprogram may be displayed to a user. For example, prior to the start timeof a live or pre-recorded exercise class or sporting event, there may beseveral minutes (e.g., 10 minutes) of pre-roll video that a user mayview while waiting for the class or event to begin. This pre-roll videomay include pre-recorded video or live video, or may alternate betweenthe two (e.g., begin with prerecorded video at 10 before the start timeand then cutting to live video of a trainer at 5 minutes before thestart time). This pre-roll video may include a countdown clock to thestart time of the class or event. In some embodiments, this pre-rollvideo does not include control commands encoded into the subtitle streamdue to this encoding beginning at the start time of the class or event.In other embodiments, there may be pre-class or pre-event controlcommands encoded in the subtitle stream of the pre-roll video, such ascontrol commands to adjust environmental control devices in the room(e.g., to adjust the temperature, lighting, music, etc. of the room).

The method 600 may include, at action 602, capturing video. For example,the video camera 106 a may be employed by the videographer 110 a tocapture, at action 602, video of the trainer 108 a performing a workout.In this example, the workout being performed by the trainer 108 a may berunning a marathon, and the video may be transmitted from the videocamera 106 a to the remote server 112 for further processing.

The method 600 may include, at action 604, encoding exercise machinecontrol commands into a subtitle stream of the video to create a videoworkout program. For example, the computer 114 may be employed by aproducer to encode, at action 604, exercise machine control commandsinto a subtitle stream of the video (that was sent to the remote server112) to create a video workout program. These exercise machine controlcommands may be targeted for a particular type of exercise machine, suchas the treadmill 120 a.

In some embodiments, the exercise machine control commands may beencoded as comma separated values (CSVs). For example, the computer 114may be employed by a producer to encode, at action 604, exercise machinecontrol commands into the CSV encoding 305 a, 305 b, 305 c, or 305 d.

In some embodiments, the exercise machine control commands may beconfigured to control one or more of a speed of one or more moveablemembers of the exercise machine, an incline percentage of one or moremoveable members of the exercise machine, or a resistance of one or moremoveable members of the exercise machine. For example, the CSV encoding305 a, 305 b, 305 c, or 305 d may include a control command configuredto control one or more of the speed (e.g., in the 2^(nd) position of theCSV encoding), the incline percentage (e.g., in the 3^(rd) position ofthe CSV encoding), or the resistance (e.g., in the 4^(th) position ofthe CSV encoding) of one or more moveable members 126 a-126 h of theexercise machine 120 a, 120 b, or 120 c.

In some embodiments, the comma separated values may further includeworkout data associated with a workout depicted in the video. Thisworkout data may include one or more of a target revolutions per minute(RPM) for the workout, a target watts for the workout, a target heartrate zone for the workout, a target heart rate for the workout, acurrent number of seconds since a start of the workout, and a workoutstate of the workout. In some embodiments, the workout state may includea warmup state, an in-workout state, or a cooldown state. For example,the CSV encoding 305 a, 305 b, 305 c, or 305 d may include workout dataassociated with the workout depicted in the video from the video, whichin this example is the running of a marathon. This workout data mayinclude one or more of a target RPM for the workout (e.g., in the 5^(th)position of the CSV encoding), a target watts for the workout (e.g., inthe 6^(th) position of the CSV encoding), a target heart rate zone forthe workout (e.g., in the 7^(th) position of the CSV encoding), a targetheart rate for the workout (e.g., in the 8^(th) position of the CSVencoding), a current number of seconds since a start of the workout(e.g., in the 1^(st) position of the CSV encoding), and a workout stateof the workout (e.g., in the 9^(th) position of the CSV encoding). Inthis example, the workout state may be encoded as a 0 for a warmupstate, as a 1 for an in-workout state, and as a 2 for a cooldown state.

In some embodiments, changes in the exercise machine control commandsmay be synchronized with associated changes in a workout depicted in thevideo. For example, as the trainer 108 a changes from running on a 0.5%incline to running on a 4.5% incline, which change is depicted in frames300 b and 300 c of the video, the exercise machine control commands thatare encoded with the frames 300 b and 300 c may be synchronized toreflect this change, namely, that the incline percentage should changefrom 0.5% to 4.5% (compare the 3^(rd) position of the CSV encoding 305 bto the 3^(rd) position of the CSV encoding 305 c).

In some embodiments, the encoding, at action 604, of the exercisemachine control commands into the subtitle stream of the video, tocreate a video workout program, may be performed subsequent to thecapturing, at action 602, of the video. For example, where the videoworkout program being produced is intended to be a pre-recorded videoworkout program that is to be performed by an exercise machine usersometime in the future, the encoding of the subtitle stream at action604 may be performed by the computer 114 (either automatically or asemployed by a producer) subsequent to the capturing of the video ataction 602 (e.g., minutes, hours, or days after the capturing of thevideo).

In some embodiments, the encoding, at action 604, of the exercisemachine control commands into the subtitle stream of the video, tocreate a video workout program, may be performed synchronously with thecapturing, at action 602, of the video. For example, where the videoworkout program being produced is intended to be a live video workoutprogram that is performed in real-time by an exercise machine usersimultaneously with a live workout (such as a live exercise machineworkout performed during a live event such as a live marathon or a liveroad bicycle race), the encoding of the subtitle stream at action 604may be performed by the computer 114 (either automatically or asemployed by a producer) synchronously with the capturing of the video ataction 602 (e.g., during a live event).

The method 600 may include, at action 606, transmitting the videoworkout program and, at action 608, receiving the video workout program.For example, the remote server 112 may send, at action 606, and theconsole 122 a of the exercise machine 120 a may receive, at action 608,the video workout program, such as via the network 118 and the localserver 116.

The method 600 may include, at action 610, executing, at an exercisemachine, the video workout program. For example, the console 122 a ofthe treadmill 120 a may execute, at action 602, a video workout program.The video workout program may include a video that includes the frames500 a-500 d that depict the trainer 108 a performing a workout thatincludes running a marathon.

The method 600 may include, at action 612, decoding the subtitle streamof the video to access the exercise machine control commands. Forexample, the console 122 a of the exercise machine 120 a may decode thesubtitle stream of the video of a video exercise program to access theexercise machine control commands. In this example, this decoding mayinclude interpreting the values stored in the comma separated valuesencoding 305 a, 305 b, 305 c, or 305 d (e.g., by the position of eachvalue), such as by decoding the 7^(th) positions of the CSV encodings asa target heart rate zones for the workout and by decoding the 8^(th)positions of the CSV encodings as target heart rates for the workout.

In this example, these exercise machine control commands correspondingto heart rates and heart rate zones may correspond to a depiction of atrainer in the video. For example, the video of the video workoutprogram may include the frames 500 a-500 d that depict the trainer 108 aperforming a workout that includes running a marathon. The video workoutprogram may also include the multiple programmed heart rate zones thatare illustrated in the chart 450 (e.g., the programmed heart rate zonesthat transition from zone 2, to zone 4, to zone 5, to zone 4, to zone 2,to zone 3, to zone 2, to zone 4, to zone 2, to zone 4, to zone 5, and tozone 4) and that correspond to the heart rate zones of the trainer 108 aas depicted in the video.

The method 600 may include, at action 612, decoding the subtitle streamof the video to access the exercise machine control commands. Forexample, the console 122 a of the exercise machine 120 a may decode thesubtitle stream of the video to access the exercise machine controlcommands. In this example, this decoding may include interpreting thevalues stored in the comma separated values encoding 305 a, 305 b, 305c, or 305 d (e.g., by the position of each value).

The method 600 may include, at action 614, displaying the video and, ataction 616, controlling one or more moveable members of the exercisemachine using the exercise machine control commands. In someembodiments, changes in the control of the one or more moveable membersof the exercise machine may occur synchronously with associated changesin the workout being displayed in the video. For example, the console122 a of the exercise machine 120 a may display the video, including theframes 300 a-300 d (which may be interleaved with other frames, sincethe frames 300 a-300 d are successively one second apart).Simultaneously, the console 122 a of the exercise machine 120 a maycontrol the running belt 126 a and the running deck 126 b of theexercise machine 120 a using the exercise machine control commands. Inthis example, when the console 122 a receives and decodes the CSVencoding 305 b, simultaneously to displaying the frame 300 b, theconsole 122 a may control the running belt 126 a to operate at 6 milesper hour based on the control command “6” found in the 2^(nd) positionof the CSV encoding 305 b, and may control the running deck 126 b toincline to 0.5% based on the control command “0.5” found in the 3^(rd)position of the CSV encoding 305 b. Similarly, in this example, when theconsole 122 a receives and decodes the CSV encoding 305 c,simultaneously to displaying the frame 300 c, which shows changes in theworkout of the trainer 108 a from running at 6 mph to 5 mph, and fromrunning on an incline of 0.5% to running on an incline of 4.5%, theconsole 122 a may control the running belt 126 a to change fromoperating at 6 mph to 5 mph based on the control command “5” found inthe 2^(nd) position of the CSV encoding 305 c, and may control therunning deck 126 b to change from being inclined at 0.5% to beinginclined at 4.5% based on the control command “4.5” found in the 3^(rd)position of the CSV encoding 305 c. In this manner, as the trainer 108 atransitions from running on a 0.5% incline to running on a 4.5% inclinein the video, the treadmill 120 a displaying the video as part of aworkout can likewise transition its running deck 126 b from a 0.5%incline to a 4.5% incline, thus mimicking the workout by the trainer 108a depicted in the video for a user on the treadmill 120 a.

In some embodiments, the video may be transmitted, at action 606, from alocation remote from the exercise machine and received, at action 608,at a location local to the exercise machine in a live broadcast toenable the executing at action 610, the decoding at action 612, thedisplaying at action 614, and the controlling at action 616 to occurduring the performance of the workout at the location remote from theexercise machine, and to enable performance of a workout on the exercisemachine at the location local to the exercise machine that mimics theperformance of the workout at the location remote from the exercisemachine. For example, where the video workout program being produced isintended to be a live video workout program that is performed by anexercise machine user simultaneously with a live workout (such as aworkout performed during a live event, such as the Boston Marathon inMassachusetts), the encoding of the subtitle stream (at action 604) maybe performed by the computer 114 as employed by a producer on-site atthe remote location 102, such as on-site the Boston Marathon inMassachusetts (e.g., in a production truck parked near the finish line,or in a nearby production studio). Then, the live video workout programmay be broadcast live over the network 118 (e.g., over the Internet viaa satellite uplink from the production truck or nearby productionstudio, possibly through Amazon Web Services (AWS), which may require adrone or blimp to get reception in a jungle or on a mountain or in acanyon or when surrounded by large buildings) to a user located at thelocal location 104, such as to a user's home in California. This mayenable the user in his home in California to perform a workout on thetreadmill 120 a that mimics the running of the Boston Marathon inMassachusetts, while the Boston Marathon is actually happening inMassachusetts. Further, in addition control commands encoded in thesubtitle stream of the video, other information may be encoded in thevideo or otherwise included with the video, such as TWITTER or FACEBOOKor INSTAGRAM comments, or other types of comments received from users ortrainers, such as over the Internet via an app or website. This otherinformation may be encoded and/or included on-site (e.g., in aproduction truck parked near the finish line or in a nearby productionstudio).

The method 600 may include, at action 618, continuously controlling oneor more moveable members of the exercise machine at a current difficultylevel. For example, the console 122 a of the treadmill 120 a maycontinuously control the running belt 126 a of the treadmill 120 a,and/or the running deck 126 b of the treadmill 120 a, at a currentdifficulty level. In some embodiments, an initial difficulty level maybe adjusted as necessary throughout the workout to help the user 109maintain their heart rate in the proper heart rate zone, as discussed inconnection with actions 630 and 632.

The method 600 may include, at action 620, continuously displaying thevideo. For example, the console 122 a of the treadmill 120 a maycontinuously display the video of the video workout program thatincludes the frames 500 a-500 d.

The method 600 may include, at action 622, continuously monitoring anactual heart rate of a user. In some embodiments, the continuouslymonitoring of the actual heart rate of the user may include continuouslymonitoring the actual heart rate of the user at least once per second,or at some other regular or irregular interval, such as twice persecond, four times per second, eight times per second, once every twoseconds, once every four seconds, or once every eight seconds. In someembodiments, the continuously monitoring of the actual heart rate of theuser may include continually verifying that the user is actually usingthe exercise machine. For example, the console 122 a of the treadmill120 a may continuously monitor the actual heart rate of the user 109,using the heart rate strap 111 b or the heart rate watch 111 a, once persecond. The console 122 a of the treadmill 120 a may also continuallyverify that the user is actually using the treadmill 120 a by analyzingthe motor load of the treadmill 120 a to identify if a user is actuallyputting a load on the motor, and/or by analyzing sensor data (such as apressure plate sensor) to identify if a user is actually present, etc.This may prevent dynamic scaling of the video workout program if theuser is still wearing the heart rate strap 111 b or the heart rate watch111 a but has stepped off of the running belt 126 a of the treadmill 120a, for example. Various other methods (beyond a pressure plate sensor)may be employed to detect that the user has stepped off the running belt126 a of the treadmill 120 a. For example, a camera may be employed todetect if a user remains running on the running belt 126 a. Also, wherea user's heart rate slows even though the speed of the running belt 126a has not slowed may be an indication that the user has stepped off ofthe running belt 126 a. Further, other safety measures may be implementsfor certain users, such as minors or the elderly or user who suffer frommorbid obesity, which may be tied to a user's age or self-identified ordetected ability level (which may be tied to data stored in the user'sonline account or profile) such as implementing a governor to cause amaximum speed and/or a maximum resistance level (or maximum workload).For example, a minor may be detected based on a weight being detected onthe running belt 126 a (e.g., based on a load on the motor or based on aweight scale) that is less than a threshold amount (e.g., under 100pounds).

The method 600 may include, at action 624, determining whether theactual heart rate zone of the user is equal to a current programmedheart rate zone. If not (no at action 624), the method 600 may include,at action 626, determining whether the actual heart rate of the user istrending toward the current programmed heart rate zone by at least athreshold heart rate trend rate. If not (no at action 626), the method600 may include, at action 628, determining whether the actual heartrate zone is higher or lower than the current programmed heart ratezone. If lower (lower at 628), the method 600 may include, at action630, adaptively scaling the video workout program by adjusting thecurrent difficulty level upward. If higher (higher at 628), the method600 may include, at action 632, adaptively scaling the video workoutprogram by adjusting the current difficulty level downward. In someembodiments, the actions 624 and 626 may be performed periodically andthen, in response, the actions 628 and 630, or the actions 628 and 632,may be performed. In some embodiments, the periodically determining ofthe actions 624 and 626 may be performed once in each 10 second periodof time, or some other regular or irregular time interval, such as oncein each 5 second period of time, once in each 2 second period of time,once every second, once each 15 second period of time, or once in each20 second period of time. In some embodiments, any actual heart ratethat is determined to be an outlier may not be used in performance ofthe periodically determining of the actions 624 and 626.

For example, the console 122 a of the treadmill 120 a may determine, ataction 624, that the actual heart rate zone (e.g., zone 4 in the datachart 502 b) of the user 109 is not equal to a current programmed heartrate zone (e.g., zone 3 in the data chart 502 b). Then, the console 122a of the treadmill 120 a determine, at action 626, that the actual heartrate of the user 109 is not trending toward the current programmed heartrate zone (e.g., zone 3 in the data chart 502 b) by at least a thresholdheart rate trend rate (e.g., +4 seconds in the data chart 502 b). Then,the console 122 a of the treadmill 120 a determine, at action 628, thatthe actual heart rate zone (e.g., zone 4 in the data chart 502 b) ishigher than the current programmed heart rate zone (e.g., zone 3 in thedata chart 502 b) and may adaptively scale, at action 632, the videoworkout program by adjusting the current difficulty level (e.g., thecurrent difficulty level of B₂ at 6.7 MPH) downward (e.g., to a newcurrent difficulty level of B₁ at 6.3 MPH).

In another example, the console 122 a of the treadmill 120 a maydetermine, at action 624, that the actual heart rate zone (e.g., zone 3in the data chart 502 d) of the user 109 is not equal to a currentprogrammed heart rate zone (e.g., zone 4 in the data chart 502 d). Then,the console 122 a of the treadmill 120 a determine, at action 626, thatthe actual heart rate of the user 109 is not trending toward the currentprogrammed heart rate zone (e.g., zone 4 in the data chart 502 d) by atleast a threshold heart rate trend rate (e.g., +5 seconds in the datachart 502 d). Then, the console 122 a of the treadmill 120 a determine,at action 628, that the actual heart rate zone (e.g., zone 3 in the datachart 502 d) is lower than the current programmed heart rate zone (e.g.,zone 4 in the data chart 502 d) and may adaptively scale, at action 630,the video workout program by adjusting the current difficulty level(e.g., the current difficulty level of B₀ at 8.0 MPH) upward (e.g., to anew current difficulty level of B₁ at 8.7 MPH).

In some embodiments, the actions 624 and 626 may further includeperiodically determining at least that a time elapsed since the videoworkout program began executing is greater than a warmup-time threshold.For example, the console 122 a of the treadmill 120 a may determine, inconnection with the actions 624 and 626, that the time elapsed since thevideo workout program began executing (e.g., 675 seconds in the datachart 502 b) is greater than a warmup-time threshold (e.g., 180seconds), in which case the current difficulty level would be adjustedupward or downward because a warmup period has been completed. If thecontrary were true, however, the current difficulty level may not beadjusted upward due to a warmup period not having been completed.

In some embodiments, the actions 624 and 626 may further includeperiodically determining at least that a time elapsed since the videoworkout program began executing is less than a warmup-time threshold andthat the actual heart rate zone is higher than the current programmedheart rate zone. For example, the console 122 a of the treadmill 120 amay determine, in connection with the actions 624 and 626, that the timeelapsed since the video workout program began executing (e.g., 60seconds) is less than a warmup-time threshold (e.g., 180 seconds) andthat the actual heart rate zone (e.g., zone 3) is higher than thecurrent programmed heart rate zone (e.g., zone 2), in which case thecurrent difficulty level would be adjusted downward at action 632. Thismay enable a current difficulty level that is initially too difficult tobe adjusted downward, even during a warmup period.

In some embodiments, the actions 624 and 626 may further includeperiodically determining at least that a time remaining in the currentprogrammed heart rate zone is greater than a time-remaining threshold.For example, the console 122 a of the treadmill 120 a may determine, inconnection with the actions 624 and 626, that a time remaining in thecurrent programmed heart rate zone (e.g., 60 seconds in the data chart502 b) is greater than a time-remaining threshold (e.g., 10 seconds), inwhich case the current difficulty level would be adjusted upward ordownward because there is sufficient time remaining in the currentprogrammed heart rate zone for a change in the current difficulty levelto be effective. If the contrary were true, however, the currentdifficulty level may not be adjusted upward or downward due toinsufficient time remaining in the current programmed heart rate zonefor a change in the current difficulty level to be effective.

In some embodiments, difficulty levels to which the current difficultylevel can be adjusted may include a baseline difficulty level, a finitenumber of positive difficulty levels that are more difficult than thebaseline difficulty level, and a finite number of negative difficultylevels that are less difficult than the baseline difficulty level. Insome embodiments, the current difficulty level may be initially set tothe baseline difficulty level, or may be initially set based on ahistory of performance of the user on the exercise machine. For example,the console 122 a of the treadmill 120 a may adjust the currentdifficulty level (e.g., the speed of the running belt 126 a) between abaseline difficulty level (e.g., B₀=7.0 MPH), six positive difficultylevels (e.g., B₁=7.5 MPH, B₂=8.0 MPH, B₃=8.4 MPH, B₄=9.0 MPH, B₅=9.7MPH, and B₆=10.5 MPH) that are more difficult than the baselinedifficulty level, and six negative difficulty levels (e.g., B⁻¹=6.5 MPH,B⁻²=6.0 MPH, B⁻³=5.6 MPH, B⁻⁴=5.0 MPH, B⁻⁵=4.6 MPH, and B⁻⁶=4.3 MPH)that are less difficult than the baseline difficulty level. In thisexample, the current difficulty level may be initially set to thebaseline difficulty level (e.g., B₀=7.0 MPH), or may be set to a mostrecent or most common difficulty level of the user in previousworkout(s) (e.g., if the user was most recently performing at a B⁻³level, the current difficulty level may be initially set to B⁻³=5.6MPH).

Subsequent to the method 600, a post-roll video of a video workoutprogram may be displayed to a user. For example, after the finish timeof a live or pre-recorded exercise class or sporting event, there may beseveral minutes (e.g., 10 minutes) of post-roll video that a user mayview after finishing the class or event. This post-roll video mayinclude pre-recorded video or live video, or may alternate between thetwo (e.g., begin with live video of the trainer at the finish time andthen cutting to pre-recorded video at 5 minutes after the finish time).In some embodiments, this post-roll video does not include controlcommands encoded into the subtitle stream due to this encoding ending atthe finish time of the class or event. In other embodiments, there maybe post-class or post-event control commands encoded in the subtitlestream of the post-roll video, such as control commands to adjustenvironmental control devices in the room (e.g., to adjust thetemperature, lighting, music, etc. of the room).

Further, subsequent to or during the method 600, an archive copy of alive video workout program may be created. This archive copy may storethe exercise machine control commands together with the video, eitherencoded in the subtitle stream or in some other storage format. In thismanner, a live video workout program may become an archived videoworkout program.

Further, the method 600 may be employed, in some embodiments, to convertolder video workout programs with exercise machine control signalsstored in another storage format into exercise machine control signalsthat are encoded into the subtitle stream of the video. This conversionmay be performed programmatically or manually (such as on the fly whilethe video workout program is being broadcast).

In some embodiments, the method 600 may result in controlling anexercise machine using a video workout program. Unlike conventionalmethods of controlling an exercise machine that lack reliablesynchronization between a video and corresponding workout controlcommands in a video workout program, the method 600 may maintainsynchronization of the video and of corresponding control commands in avideo workout program due to the fact that, in a video, frames from thevideo are timed with frames of a subtitle stream. This synchronizationin the method 600 between a video and corresponding control commands ina video workout program can enable a user to become immersed in aworkout on the exercise machine, which may help the user to avoid theboredom and burnout that is often experienced by users of exercisemachines. Further, method 600 may result in the performance of a workoutin which the current difficulty level may be dynamically scaled based onthe monitored heart rate of the user 109. However, due to the fact thatthe direction and speed at which the heart rate of the user 109 istrending is also being continually monitored, the method 600 may avoidthe video workout program from changing the current difficulty level toooften and/or too dramatically. Thus, the method 600 may result in theenjoyment of the user 109 being increased, the inadvertent operation ofthe exercise machine (e.g., the treadmill 120 a of FIG. 1) at adifficulty level that is not optimal for the fitness level of the user109 being avoided, and the integrity between the workout of the trainer108 a shown in the frames 500 a-500 d from the video and the actualworkout performed by the user 109 being maintained, thus increasing theability of the user 109 to become more immersed in the workout on thetreadmill 120 a, which may help the user to avoid the boredom andburnout that is often experienced by users of exercise machines.

Although the actions of the method 600 are illustrated in FIGS. 6A and6B as discrete actions, various actions may be divided into additionalactions, combined into fewer actions, reordered, expanded, oreliminated, depending on the desired implementation. For example, insome embodiments, actions 604-616 may be performed without performingthe other actions of the method 600. Further, in some embodiments,actions 618-630 or 632 may be performed without performing the otheractions of the method 600.

FIG. 7 illustrates an example computer system 700 that may be employedin controlling an exercise machine using a video workout program. Insome embodiments, the computer system 700 may be part of any of thesystems or devices described in this disclosure. For example, thecomputer system 700 may be part of any of the video cameras 106 a-106 b,the computer 114, the remote server 112, the local server 116, theexercise machines 120 a-120 d, the consoles 122 a-122 d, or the tablet124 of FIG. 1.

The computer system 700 may include a processor 702, a memory 704, afile system 706, a communication unit 708, an operating system 710, auser interface 712, and an application 714, which all may becommunicatively coupled. In some embodiments, the computer system maybe, for example, a desktop computer, a client computer, a servercomputer, a mobile phone, a laptop computer, a smartphone, a smartwatch,a tablet computer, a portable music player, an exercise machine console,a video camera, or any other computer system.

Generally, the processor 702 may include any suitable special-purpose orgeneral-purpose computer, computing entity, or processing deviceincluding various computer hardware or software applications and may beconfigured to execute instructions stored on any applicablecomputer-readable storage media. For example, the processor 702 mayinclude a microprocessor, a microcontroller, a digital signal processor(DSP), an application-specific integrated circuit (ASIC), aField-Programmable Gate Array (FPGA), or any other digital or analogcircuitry configured to interpret and/or to execute program instructionsand/or to process data, or any combination thereof. In some embodiments,the processor 702 may interpret and/or execute program instructionsand/or process data stored in the memory 704 and/or the file system 706.In some embodiments, the processor 702 may fetch program instructionsfrom the file system 706 and load the program instructions into thememory 704. After the program instructions are loaded into the memory704, the processor 702 may execute the program instructions. In someembodiments, the instructions may include the processor 702 performingone or more actions of the method 600 of FIGS. 6A-6B.

The memory 704 and the file system 706 may include computer-readablestorage media for carrying or having stored thereon computer-executableinstructions or data structures. Such computer-readable storage mediamay be any available non-transitory media that may be accessed by ageneral-purpose or special-purpose computer, such as the processor 702.By way of example, and not limitation, such computer-readable storagemedia may include non-transitory computer-readable storage mediaincluding Read-Only Memory (ROM), Electrically Erasable ProgrammableRead-Only Memory (EEPROM), Compact Disc Read-Only Memory (CD-ROM) orother optical disk storage, magnetic disk storage or other magneticstorage devices, flash memory devices (e.g., solid state memorydevices), or any other storage media which may be used to carry or storedesired program code in the form of computer-executable instructions ordata structures and which may be accessed by a general-purpose orspecial-purpose computer. Combinations of the above may also be includedwithin the scope of computer-readable storage media. Computer-executableinstructions may include, for example, instructions and data configuredto cause the processor 702 to perform a certain operation or group ofoperations, such as one or more actions of the method 600 of FIGS.6A-6B. These computer-executable instructions may be included, forexample, in the operating system 710, in one or more applications, or insome combination thereof.

The communication unit 708 may include any component, device, system, orcombination thereof configured to transmit or receive information over anetwork, such as the network 118 of FIG. 1. In some embodiments, thecommunication unit 708 may communicate with other devices at otherlocations, the same location, or even other components within the samesystem. For example, the communication unit 708 may include a modem, anetwork card (wireless or wired), an infrared communication device, awireless communication device (such as an antenna), and/or chipset (suchas a Bluetooth device, an 802.6 device (e.g., Metropolitan Area Network(MAN)), a WiFi device, a WiMax device, a cellular communication device,etc.), and/or the like. The communication unit 708 may permit data to beexchanged with a network and/or any other devices or systems, such asthose described in the present disclosure.

The operating system 710 may be configured to manage hardware andsoftware resources of the computer system 700 and configured to providecommon services for the computer system 700.

The user interface 712 may include any device configured to allow a userto interface with the computer system 700. For example, the userinterface 712 may include a display, such as an LCD, LED, or otherdisplay, that is configured to present video, text, application userinterfaces, and other data as directed by the processor 702. The userinterface 712 may further include a mouse, a track pad, a keyboard, atouchscreen, volume controls, other buttons, a speaker, a microphone, acamera, any peripheral device, or other input or output device. The userinterface 712 may receive input from a user and provide the input to theprocessor 702. Similarly, the user interface 712 may present output to auser.

The application 714 may be one or more computer-readable instructionsstored on one or more non-transitory computer-readable media, such asthe memory 704 or the file system 706, that, when executed by theprocessor 702, is configured to perform one or more actions of themethod 600 of FIGS. 6A-6B. In some embodiments, the application 714 maybe part of the operating system 710 or may be part of an application ofthe computer system 700, or may be some combination thereof.

INDUSTRIAL APPLICABILITY

Various modifications to the embodiments illustrated in the drawingswill now be disclosed.

In general, some example methods disclosed herein may enable live orprerecorded video workout programs to be executed on an exercise machinethat mimic workouts performed remotely from the exercise machine. Forexample, a workout may be performed by a trainer in an exotic remotelocation anywhere in the world, and a video of the workout beingperformed can be captured in a video workout program. Then, eithersubsequent to or synchronously with the capturing of the video, asubtitle stream of the video can be encoded with exercise machinecontrol commands, that mimic the workout being performed in the remoteexotic location, to create a video workout program. Then, the videoworkout program can be transmitted to a local location of an exercisemachine, the video of the video workout program can be displayed to auser of the exercise machine, and the control commands of the videoworkout program can simultaneously be used to control the exercisemachine to mimic, for the user on the exercise machine, the workout ofthe trainer in the exotic remote location depicted in the video. Due tothe fact that, in a video, frames from the video are timed with framesof the subtitle stream, the encoding of workout control commands in asubtitle stream maintains synchronization of the video and ofcorresponding workout control commands in the video workout program.This synchronization between a video and corresponding control commandsin the video workout program can enable a user to become immersed in aworkout on the exercise machine, which may help the user to avoid theboredom and burnout that is often experienced by users of exercisemachines.

Further, in general, some example methods disclosed herein may enablelive or prerecorded video workout programs on an exercise machine to bedynamically scaled based on heart rate monitoring. For example, due tothe possibility that the fitness level of the user may be higher orlower than is optimal for the workout being performed by the trainer inthe video of a video workout program, the actual heart rate of the usermay be continuously monitored during the performance of the workout, andthe difficulty level of the video workout program may be dynamicallyscaled during the performance of the workout to help the user maintainproper heart rate zones during the workout. By monitoring not only theuser's current heart rate but also the direction and speed at which theuser's heart rate is trending, the method may avoid changing the currentdifficulty level too often. Further, in some embodiments, the changes tothe current difficulty level can be limited to avoid being changed toodramatically in order to avoid the current difficulty level experiencedby the user from being dramatically different from the difficulty levelthat the user sees in the video. As a result of the current difficultylevel not being changed too often and/or too dramatically, the enjoymentof the user may be increased, the inadvertent operation of the exercisemachine at a level that is not optimal for the user's fitness level maybe avoided, and the integrity between the workout of the trainer shownin the video and the actual workout performed by the user can bemaintained, thus increasing the ability of the user to become moreimmersed in the workout on the exercise machine. Maintaining theintegrity between the workout of the trainer shown in the video and theactual workout performed by the user may result, for example, in atrainer running but a user running at a faster or slower pace, but notwalking or not sprinting.

In the exercise system disclosed herein, a video camera may beconfigured to communicate a video workout program over a network to beexecuted at, and to control, an exercise machine either directly orthrough any number of intermediate computer systems. For example, aremote server may be eliminated, and the video workout program may betransmitted over the network, after a video of the video workout programis encoded with exercise machine control commands, directly from acomputer. In another example, both the remote server and the computermay be eliminated, and the encoding of the subtitle stream of the videowith exercise machine control commands may occur at the video camera,resulting in the creation of a video workout program that is transmittedover the network directly from the video camera. In another example,another device, such as a wearable device worn by a videographer or wornby a trainer, may be used by the videographer or the trainer to encodethe subtitle stream of the video to create a video workout programbefore the video workout program is transmitted over the network, and/orthe encoding of the subtitle stream may occur automatically based ondata gathered from sensors worn by the trainer, thus eliminating aproducer from the production of the live video workout program or theprerecorded video workout program. In this example, the trainer may be aprofessional athlete (e.g., an NBA player), and the sensor(s) may beworn by the professional athlete during a professional sporting event(e.g., during an NBA playoff game), and the professional athlete'sbiometric data (e.g., heart rate data) may be encoded to allow a user athome to try to match their biometric data (e.g., heart rate) to thebiometric data of the professional athlete. In another example, a localserver may be eliminated, and the video workout program may betransmitted directly from the network to a console, or to a tablet wherethe tablet functions as a console or functions in connection with aconsole.

Further, in another example, the video workout program may becommunicated to two devices, one to display the video, and another tocontrol an exercise machine. In this example, a large television, avirtual reality (VR) or augmented reality (AR) headset, or some otherdevice with a display may be configured to display the video of thevideo workout program, while another device such as a console may beconfigured to simultaneously control the exercise machine using thedecoded exercise machine control commands from the subtitle stream ofthe video of the video workout program.

Also, in another example, the video camera may be configured to beoperated by the trainer, thus eliminating the videographer.

Further, in another example, the video workout program may be broadcastto a single machine, such as in a one-on-one personalized workoutsession between a trainer and a user, or may be broadcast to multiplemachines simultaneously, and multiple users may perform the pre-recordedvideo workout program, or the live video workout program,simultaneously. This may be useful in a gym setting where multiple usersare in a group class and wish to perform the same workout together as agroup. This simultaneous performance of a live video workout program ora pre-recorded video workout program may be performed on machines of thesame type (e.g., all treadmills), or on machine of different types(e.g., some users on treadmills and some users on elliptical machines).Where the machines are of different types, the workout may include twosets of control commands that are individually relevant to a single typeof machine, or may include a single set of control commands that may beused by both types of machines as relevant to each type of machine.

Also, although only a treadmill, elliptical machine, exercise bike, andrower machine are illustrated in the exercise system disclosed herein,it is understood that other types of exercise machines may be employedin the exercise system. For example, a cable weight machine or cablestrength training machine (such as the NordicTrack Fusion CST machine),a stair climbing machine, or any other type of exercise machine may beemployed.

Further, although some example heart rate zones disclosed herein areassociated with particular ranges of heart rates, it is understood thata heart rate zone may be limited to smaller ranges of heart rates or toa single heart rate. Therefore, the term “zone” as used herein mayencompass a single heart rate or a range of heart rates.

In the example frames, data, and CSV encodings disclosed herein, it isunderstood that the data gathered in the data charts are example dataonly, and other types of data may be additionally or alternativelygathered during the capturing of the video and/or during the creation ofthe video workout program. For example, precipitation data, temperaturedata, smell data, wind data, lighting data, and other types of data maybe gathered during the capturing of the video. This data may then beencoded or included along with the exercise machine control commands,such as in the subtitle stream of the video in CSV encodings, to createthe video workout program. Then, once decoded from the subtitle streamor otherwise accessed in the video workout program, this data may beemployed automatically by an exercise machine to further create animmersive experience for a user of the exercise machine. For example,precipitation data may be employed to operate a mister, temperature datamay be employed to operate a thermostat, smell data may be employed tooperate a smell simulator, wind data may be employed to operate a fan,and/or lighting data may be employed to operate lighting, all in aneffort to mimic, as much as possible, the remote environment of theworkout depicted in the video of the video workout program oncetransmitted to the local location of the exercise machine. Other datamay also be employed such as nutrition data that operates a smart foodprocessor or food processor (e.g., a smart blender in connection with asmart refrigerator to make a particular protein shake with particularnutrients). In this manner, the user may further be immersed in theworkout depicted in the video, which may help the user to forget anydiscomfort being experienced during the workout, and combat the boredomand burnout that is often experienced by users of exercise machines.

Further, although the workout depicted in the frames disclosed herein isan outdoor workout, any workout, whether indoors or outdoors, whetherlive or pre-recorded, and whether using an exercise machine or not usingan exercise machine, may be depicted in the videos of the video workoutprograms disclosed herein. For example, a trainer may employ an exercisemachine in a remote location to lead a group class in a studio workoutat a local gym (or multiple group classes at multiple local gyms) ofusers exercising on the same type of exercise machine as the trainer. Inthis example, the video workout program may be a live video workoutprogram or a pre-recorded video workout program, and the workout may beperformed inside a building (e.g., in a workout studio) or outdoors.Further, although the workout depicted in the frames disclosed herein isa workout by a trainer, any person, whether a professional trainer ornot, may perform the workout. For example, where two friends want toexperience a workout in an exotic location (e.g., hiking Mount Everest),but only one of the friends has the money to make the trip, the secondfriend can experience the same workout at home on his treadmill as hisfriend experiences on his trip to the exotic location, using the methodsdisclosed herein.

Further, although the CSV encodings disclosed herein include nine (9)values, it is understood that CSV encoding may include greater than orless than nine (9) values. Further, values may be added over time as newcontrol commands or other data becomes desirable to send to an exercisemachine. Also, although a value of zero (0) is used to designate N/A inthe CSV encodings disclosed herein, any other value, or no value at all,may be used instead to designate N/A in a CSV encoding. Further,although CSV encodings are disclosed herein as an example of how controlcommands and other data may be encoded in a subtitle stream, any othertype of encoding, other than a CSV encoding, may be employed instead.For example, instead of values separated by a comma, values separated bysome other delimiter may be employed. Further, other encodings that donot employ a delimiter may be employed.

Further, although the subtitle stream encodings disclosed herein aregenerally employed to encode control commands for exercise machines, itis understood that these subtitles stream encodings may additionally oralternatively be employed to encode control commands for other types ofdevices, such as televisions, smart appliances, automobile systems,environmental systems etc. For example, where a sporting event such asan NFL football game is broadcast over a television channel (e.g., NBC),the subtitle stream of the video depicting the marathon being broadcastmay be encoded with control commands that: cause a couch vibrationsystem to rumble and/or toss a user up when a big tackle occurs, cause asmart popcorn maker to make popcorn to be ready to eat at the end ofeach quarter or at the beginning of each commercial break, cause a scentdevice to emit a scent of grass or hotdogs to mimic smells in the NFLstadium depicted in the video, and cause a smart refrigerator pour aspectator a Coca-Cola in response to a user sending an indication ofinterest in a Coca-Cola commercial in the video back to the televisionchannel (e.g., via a senor noticing interest by the user, such as acamera or biosensor, or via a manual indication by the user, such as acommand to a smart speaker, or an indication on a smartphone app orwebsite of the television station). Therefore, the subtitle streamencodings disclosed herein may be employed to control any device, suchas to synchronize the automatic functioning of the device with thecontent depicted in the video.

Also, it is understood that the subtitle stream encodings disclosedherein may be secured to prevent a malicious third party from insertingmalicious control commands into the subtitle stream encodings. Forexample, Amazon Web Services (AWS) may be employed to only accept videoworkout programs from a particular IP address. In this example, whencontrol commands are embedded in a video of a video workout program, andthen the resulting video workout program is sent to AWS from theparticular IP address in an encrypted channel (with AWS holding the keyto the encrypted channel), this may prevent AWS from accepting amalicious video workout program from another IP address and/or withanother encryption scheme.

Further, although a video workout program is described herein asincluding a video and control commands that may cause an exercisemachine to mimic the workout depicted in the video, it is understoodthat an exercise machine employing any of the methods disclosed hereinmay be configured to allow a user to seize control of the exercisemachine during execution of the video workout program. For example, ifthe workout depicted in the video of the video workout program is toostrenuous for a user, a user may opt to continue watching the video fromthe video workout program but cease to have the control commandscontinue to control the exercise machine. Therefore, control of a user'sexercise machine by control commands of a video workout program may beoverridden, either manually or automatically. In this example, a usermay seize control of the exercise machine by selecting any of thestandard controls of the exercise machine (e.g., the manual speedcontrol), and may then again allow the video workout program to againcontrol the exercise machine by selecting a “follow workout” control ora “follow trainer” control or a “follow video” control. In a firstvariation of this example, a video workout program executing on theexercise machine may continue to automatically scale the workout up anddown, even though the user has manually modified a control of theworkout, where the user has changed a control in the direction the useris supposed to be moving according to the video workout program (e.g.,the user increases the speed where the video workout program is on theverge of doing so, or the user decreases the decline where video workoutprogram is on the verge of doing so). In a second variation of thisexample, a video workout program executing on the exercise machine maycontinue to automatically scale the workout up and down to follow theworkout depicted in the video, but may do so with the current difficultylevel reset to the level set by the user. In a third variation of thisexample, the control by the video workout program executing on theexercise machine may be entirely overridden so that control of theexercise machine transfers entirely to the user, with no automaticallyscaling of the workout to follow the workout depicted in the video. Inthis third variation, with the control by the video workout programentirely overridden, the heart rate training widget may be disabled.Further, this third variation may result at any point during a videoworkout program where current heart rate data for the user becomesunavailable or unreliable for any reason, such as where a user removestheir heart rate monitoring device (or never had it on in the firstplace), where the heart rate monitoring device is detected to be worn byanother user or an animal (e.g., by a pet dog) or paired with the wrongexercise machine, or where their heart rate monitoring devices otherwiseceases to function properly for any other reason.

Some example embodiments may thus result in a personalized workout,which caters to the actual physiological response of the user to theworkout, with hands-free adjustments to the workout being made on thefly. Further, some example embodiments enable a workout to adapt tocurrent or recent conditions, as various current or recent factors canaffect the heart rate of a user, such as current fitness level, recentsleep (or lack thereof), current dehydration or hydration levels, recentcaffeine intake, current stress level, current fatigue level, currenttemperature, or current humidity level, or some combination thereof. Forexample, while a user's fitness level may not dramatically change day today, other factors in a user's life can change day to day, and someembodiments may take those changes into account. For example, if a useris stressed, sleep deprived, dehydrated, or fatigued, the heart rate ofthe user may be faster than normal and the workout for the user may beautomatically adjusted to be easier. In contrast, if the user is wellrested, hydrated, and feeling fresh, the heart rate of the user may beslower than normal and the workout may be automatically adjusted to pushthe user harder. This may result in a workout that is not just cateredto a user, but that is more specifically catered to the user on theparticular day of the workout given the particular condition(s) of theuser.

Some example embodiments can be employed with various types of workoutssuch as running, cycling, rowing, or other exercise machine workouts.Some example embodiments can avoid a user from overtraining by doingheart rate training more intelligently and may naturally force a user toprogress as the fitness level of the user gradually increases, thusensuring that a user increases a training load in a smart and meaningfulway.

In some embodiments, the adaptive scaling of a video workout program byadjusting the current difficulty level may include adjusting multipleexercise machine parameters simultaneously. For example, in the case ofa treadmill, the adaptive scaling of a video workout program may includesimultaneously adjusting the current difficulty level of both a speed ofa running belt and an incline percentage of a running deck. By adjustingmultiple exercise machine parameters simultaneously in this manner, theintegrity of the original workout depicted in the video may be bettermaintained and a more personalized workout may be performed by the user.For example, where a trainer is dramatically less fit than a user, in avideo workout program in which the trainer is walking with a certainheart rate zone, the only way to get the user into that same heart ratezone or higher, while maintaining the integrity of the workout with theuser walking rather than running, may be to dramatically increase theincline percentage of the running deck above the incline percentage atwhich the trainer performed their workout, rather than increasing thespeed of the running belt much or at all. In this manner, both thetrainer and the user are performing the workout by walking, but thedramatically more fit user is simply doing so at a high inclinepercentage than the dramatically less fit trainer. This may be due, atleast in part, to a much greater loss in workout integrity due to thedifference between walking and running versus walking at a lower inclinepercentage and walking at a higher incline percentage. In other words,while a user may easily notice a loss of workout integrity with the userrunning while the trainer is walking, the user may not be as likely tonotice that their incline percentage is higher than the inclinepercentage of the trainer. An opposite example may also be implementedin a running video workout program, where the incline percentage of therunning deck of the user is adjusted below (perhaps even to a negativeincline percentage) the incline percentage at which the trainerperformed their workout, rather than decreasing the speed of the runningbelt much or at all, to compensate for a dramatically les fit user. Inthis manner, both the trainer and the user are performing the workout byrunning, but the dramatically less fit user is simply doing so at alower incline percentage than the dramatically more fit trainer.

In some embodiments, the adaptive scaling of a video workout program mayinclude adjusting the current difficulty level of one or more exercisemachine parameters and/or may include adjusting environmental factorsthat affect the difficulty of a workout. For example, the adjustment ofenvironmental factors may include operation of a mister, adjustment of athermostat, operation of a smell simulator, operation of a fan, and/oradjustment of lighting. Adjustment of each of these environmentalfactors may increase or decrease the difficulty of a video machineworkout, and may be employed in a video machine workout in cooperationwith, or instead of, the adjusting of the current difficulty level ofone or more exercise machine parameters. Further, a user may be providedwith personalization instructions during a video workout program thatmay affect the difficulty of the workout, such as instructions tohydrate, instructions to change the thermostat, instructions to operatea fan, or any other personalization or combination of personalizations.

In some embodiments, the adaptive scaling of a video workout program byadjusting the current difficulty level may include adjusting anyexercise machine parameter related to difficulty using formulas employedto calculate the varying difficulty levels of a workout. For example,formulas may be employed to compute six difficulty levels that areeasier than a baseline difficulty level, and six to twelve difficultylevels that are harder than the baseline difficulty level. Workouts willbe scaled the same, regardless of exercise machine parameter limits. Ifan exercise machine parameter exceeds an exercise machine parameterlimit, the exercise machine parameter may be set at a maximal exercisemachine parameter limit.

In some embodiments, and in light of the possibility (or likelihood)that a user will perform a video workout program at a difficulty levelother than the baseline difficulty level (e.g., different than thedifficulty level of the trainer), the trainer depicted in the video ofthe video workout program may give verbal instructions in the video thatare more directional than they are specific. For example, a trainer mayexplain that the workout will now be “increasing incline” rather thanthe workout will now be “increasing incline up to 10% incline.” Thus, atrainer may not call out specific speeds, inclines, or resistances, butmay call out more general revolutions per minute (RPM), strokes perminute (SPM), or rate of perceived exertion (RPE). A trainer may furthermake general statements in a video such as “I specifically picked thedifficulty of this workout for you” or “I'll take this workout intoaccount for the next workouts in the series” to give the trainer creditin the corresponding video workout program for the changes in theexercise machine control commands. The trainer in the video may alsogive verbal instructions that convey ideas such as “You can take controlto adjust things if needed because you know yourself better thananyone,” “If you need to take it easier today, just make one smalladjustment and I'll handle the rest,” “If you want an extra challengetoday, make an adjustment and I'll handle the rest,” “If you want toincrease intensity, it might be better to increase intensity during thehard part of an interval, not the recovery,” or “If you don't feelcomfortable running faster than a certain pace, in the settings, feelfree to set your max speed, and I'll make sure I don't take you beyondthat.” In some embodiments, a live video workout program may experiencesome natural lag between being recorded and broadcast and received andexecuted to control an exercise machine of a user. For example, thisnatural lag may be a few seconds long. In some embodiments, anartificial lag may also be introduced into a live video workout program.For example, an artificial lag of 10 seconds may be introduced into alive video workout program to allow for unexpected or unwanted videoand/or audio to be edited out of the live video stream (e.g., to editout audible obscenities uttered at a live event, or to edit out portionsof a video that show visible obscenities). In either example, althoughthis natural lag and/or artificial lag may cause a delay between thelive event or class depicted in the video and the experience by theuser, the user may nevertheless be watching the video so close in timeto the actual events depicted that the user feels as though they areparticipating in the live event in real-time.

In some embodiments, the formulas for the various difficulty levels maybe as follows, which correspond to a treadmill, an exercise bike, anelliptical machine, and a rower machine.

For a Treadmill (speed B of running belt):

-   -   B⁻¹=if (B>1, B−0.7{circumflex over ( )}(5.1−B)−(0.8*(B/8)),B)    -   B⁻²=if (B>1, B−0.7{circumflex over ( )}(5.1−B)−(0.5*(B/8)), B)    -   B⁻³=if (B>1, B−0.7{circumflex over ( )}(5.1−B), B)    -   B⁻⁴=if (B>1, B−0.7{circumflex over ( )}(6−B), B)    -   B⁻⁵=if (B>1, B−0.7{circumflex over ( )}(7−B), B)    -   B⁻⁶=if (B>1, B−0.7{circumflex over ( )}(9−B), B)    -   B₀=B    -   B₁=if (B>1.4, 0.7{circumflex over ( )}(9−B)+B, B)    -   B₂=if (B>1.4, 0.7{circumflex over ( )}(7−B)+B, B)    -   B₃=if (B>1.4, 0.7{circumflex over ( )}(6−B)+B, B)    -   B₄=if (B>1.4, 0.7{circumflex over ( )}(5−B)+B, B)    -   B₅=if (B>1.4, 0.7{circumflex over ( )}(4.2−B)+B, B)    -   B₆=if (B>1.4, 0.7{circumflex over ( )}(3.5−B)+B, B)    -   B₇=if (B>4, 0.7{circumflex over ( )}(2.6−B)+B, if (B>1.4,        0.7{circumflex over ( )}(3.5−B)+B, B))    -   B₈=if (B>4, 0.7{circumflex over ( )}(1.8−B)+B, if (B>1.4,        0.7{circumflex over ( )}(3.5−B)+B, B))    -   B₉=if (B>4, 0.7{circumflex over ( )}(1.2−B)+B, if (B>1.4,        0.7{circumflex over ( )}(3.5−B)+B, B))    -   B₁₀=if (B>4, 0.7{circumflex over ( )}(0.6−B)+B, if (B>1.4,        0.7{circumflex over ( )}(3.5−B)+B, B))    -   B₁₁=if (B>4, 0.7{circumflex over ( )}(−B)+B, if (B>1.4,        0.7{circumflex over ( )}(3.5−B)+B, B))    -   B₁₂=if (B>4, 15, if (B>1.4, 0.7{circumflex over ( )}(3.5−B)+B,        B)) (note, the speed is set to 15 MPH for B₁₂ instead of 12 MPH,        to provide for a treadmill that has a maximum speed of 15 MPH        instead of 12 MPH)

Example, where baseline speed B₀=7.0 MPH, and equipment maximum speed is12 MPH:

-   -   B⁻⁴=5.0 MPH    -   B⁻³=5.6 MPH    -   B⁻²=6.0 MPH    -   B⁻¹=6.5 MPH    -   B₀=7.0 MPH    -   B₁=7.5 MPH    -   B₂=8 MPH    -   B₃=8.4 MPH    -   B₄=9 MPH    -   B₅=9.7 MPH    -   B₆=10.5 MPH    -   B₇=11.8 MPH    -   B₈=12 MPH (Note, these five last levels are set to the equipment        maximum speed of 12 MPH)    -   B₉=12 MPH    -   B₁₀=12 MPH    -   B₁₁=12 MPH    -   B₁₂=12 MPH

For a Treadmill (incline percentage C of running belt):

-   -   C⁻⁶=if (B<4, (C>0, C−0.65*C, C), C)    -   C⁻⁵=if (B<4, (C>0, C−0.55*C, C), C)    -   C⁻⁴=if (B<4, (C>0, C−0.45*C, C), C)    -   C⁻³=if (B<4, (C>0, C−0.35*C, C), C)    -   C⁻²=if (B<4, (C>0, C−0.25*C, C), C)    -   C⁻¹=if (B<4, (C>0, C−0.15*C, C), C)    -   C₀=C    -   C₁=if (B<4, (C>0, 0.2*(40−C)/40*C+C, C), C)    -   C₂=if (B<4, (C>0, 0.4*(40−C)/40*C+C, C), C)    -   C₃=if (B<4, (C>0, 0.6*(40−C)/40*C+C, C), C)    -   C₄=if (B<4, (C>0, 0.8*(40−C)/40*C+C, C), C)    -   C₅=if (B<4, (C>0, (40−C)/40*C+C, C), C)    -   C₆=if (B<4, (C>0, 1.2*(40-C)/40*C+C, C), C)

Example, where baseline incline percentage is C₀=9%, and each inclinepercentage is rounded to the nearest 0.5%):

-   -   C⁻⁶=3%    -   C⁻⁵=4%    -   C⁻⁴=5%    -   C⁻³=6%    -   C⁻²=7%    -   C⁻¹=7.5%    -   C₀=9%    -   C₁=10.5%    -   C₂=12%    -   C₃=13%    -   C₄=14.5%    -   C₅=16%    -   C₆=17.5%

For an Exercise Bike, an Elliptical Machine, or a Rower Machine(resistance R on the pedals, the handles, and/or the rowbar):

-   -   R⁻⁶=if (if (R−6<1, 1, R−6)>24, 24, if (R−6<1, 1, R−6))    -   R⁻⁵=if (if (R−5<1, 1, R−5)>24, 24, if (R−5<1, 1, R−5))    -   R⁻⁴=if (if (R−4<1, 1, R−4)>24, 24, if (R−4<1, 1, R−4))    -   R⁻³=if (if (R−3<1, 1, R−3)>24, 24, if (R−3<1, 1, R−3))    -   R⁻²=if (if (R−2<1, 1, R−2)>24, 24, if (R−2<1, 1, R−2))    -   R⁻¹=if (if (R−1<1, 1, R−1)>24, 24, if (R−1<1, 1, R−1))    -   R₀=R    -   R₁=if (if (R−1<1, 1, R−1)>24, 24, if R−1<1, 1, R+1))    -   R₂=if (if (R+2<1, 1, R+2)>24, 24, if (R+2<1, 1, R+2))    -   R₃=if (if (R+3<1, 1, R+3)>24, 24, if (R−3<1, 1, R+3))    -   R₄=if (if (R+5<1, 1, R+5)>24, 24, if (R+5<1, 1, R+5))    -   R₅=if (if (R+5<1, 1, R+5)>24, 24, if (R+5<1, 1, R+5))    -   R₆=if (if (R+6<1, 1, R+6)>24, 24, if (R+6<1, 1, R+6))

Example where baseline resistance on pedals is R₀=9:

-   -   R⁻⁶=3    -   R⁻⁵=4    -   R⁻⁴=5    -   R⁻³=6    -   R⁻²=7    -   R₄=8    -   R₀=9    -   R₁=10    -   R₂=11    -   R₃=12    -   R₄=13    -   R₅=14    -   R₆=15

In some embodiments, a starting difficulty level, other than thebaseline difficulty level, may be determined for a user prior tobeginning a video workout program. For example, after a user hascompleted at least a threshold number or workouts of at least athreshold duration (e.g., 3 workouts of a duration greater than 5minutes), the data from these workouts, and possibly one or more otherearlier workouts, may be analyzed (e.g., the past 7 completed workoutswith a duration of more than 5 minutes may be analyzed, which may bearound the last two weeks of workouts for some users). Outlier data maybe excluded (especially low outliers instead of high outliers, becauseusers don't tent over-exert beyond capability, but do tend tounder-exert below capability), and the average data (e.g., average VO₂,average watts, average heart rate, or average heart rate recovery rate,or some combination thereof) of the workouts may be determined, and theclosest difficulty level may be used as the starting difficulty levelbased on this average. In this manner, adjustments in difficulty leveltoward the beginning of a video workout program may be minimized. Inother words, based on user history and behaviors, some embodiments mayintelligently decide what level works best for the user, and as timeprogresses, some embodiments get smarter and learn more about the user.Scaled difficulty levels may be stored and labeled after beingcalculated for further use. For example, scaled difficulty levels may bestored and labeled based on the average VO₂ of the workout, according tothe following formula:(C ₁ +C ₂ +C ₃ +C ₄ +C ₅ +C ₆ +C ₇)/M/*200/(T ₁ +T ₂ +T ₃ +T ₄ +T ₅ +T ₆+T ₇)=AVO₂

-   -   Where:    -   M=Mass (kg)    -   AVO₂=Average Relative VO₂ (ml/kg/sec)    -   C=Calorie Burn (kcal)        -   C₁=Calorie burn for most recent workout        -   C₂=Calorie burn for second most recent workout        -   C₃=Calorie burn for third most recent workout        -   Etc.    -   T=Time/Workout Duration (seconds)        -   T₁=Workout duration for most recent workout        -   T₂=Workout duration for second most recent workout        -   T₃=Workout duration for third most recent workout        -   Etc.    -   In one example, where a user has a mass of 68 kg and has a VO₂        of 0.453 ml/kg/sec, this formula may result in an AVO₂ of        0.453*68=30.8 AVO₂.

In some embodiments, calculating the average VO₂ of a workout may enablecomputation of the overall level at which the workout is programmed. Forexample, in the context of treadmill workouts, this may allow for basicdifferentiation between walking and running workouts as a whole. Thismay allow the targeting of different fitness levels with associatedzones. For example, the Instantaneous VO₂ for every control set may becalculated according to the following formulas, which correspond to atreadmill, exercise bike, elliptical machine, and a rower machine:

For a Treadmill:

-   -   If S<1.8 m/s        (0.1*S)+(1.8*S*G)+0.058333=VO₂(ml/kg/sec)    -   Else if S≥1.8 m/s        (0.2*S)+(0.9*S*G)+0.058333=VO₂(ml/kg/sec)    -   Where:        -   S=Speed (m/s)        -   G=Percent grade or incline (m/m)    -   Then, the average VO₂ may be calculated according to the        following formula:        Σ(IVO₂ *T)/Σ(T)=AVO₂(ml/kg/sec)    -   Where:        -   T=Time spent at that pace and grade or incline (sec)        -   VO₂=Instantaneous volume of oxygen consumed (ml/kg/sec)        -   AVO₂=Workout volume of oxygen consumed (ml/kg/sec)

For an Exercise Bike:VO₂=(10.8*W/84)/60+0.11666667

-   -   Where:        -   W=Power (watts)        -   VO₂=Instantaneous volume of oxygen consumed (ml/kg/sec)        -   60=division from min to sec        -   0.11666667=VO₂ at rest (added to active VO₂)        -   84=default weight

For an Elliptical Machine:VO₂=1.15*(10.8*W/84)/60+0.11666667

-   -   Where:        -   W=Power (watts)        -   VO₂=Instantaneous volume of oxygen consumed (ml/kg/sec)        -   1.15=efficiency correction        -   60=division from min to sec        -   0.11666667=VO₂ at rest (added to active V02)        -   84=default weight

For a Rower Machine:W=(((RR/100)+(1−(RR/100))*0.25)*S*1.75)*5VO₂=(0.20833*W+6.92)/84

-   -   Where:        -   W=Power (watts)        -   VO₂=Instantaneous volume of oxygen consumed (ml/kg/sec)        -   1.75 meters (5′9″)=default user height        -   84 kg (185 lbs.)=default user weight of

Then, other formulas may be employed to compute different heart ratezone values for a user. This may be done by breaking up instantaneousVO₂ values into simple categories with a max and min. A heart rate zonemay be calculated for every control set. Two different sets of heartrate zone values may be determined by the overall workout VO₂ (AVO₂).For example, first workouts may be divided by Average VO₂ and a zone maybe assigned for each control set, according to the formulas below, whichcorrespond to a treadmill, an exercise bike, an elliptical machine, anda rower machine:

For a Treadmill:

-   -   If AVO₂<0.35 ml/kg/sec    -   Compute Zones as such by INSTANTANEOUS VO₂ for each control set:        -   if instantaneous VO₂<0.1, Zone=0/-- (Not in a real zone)        -   0.1≥VO₂<0.2, Zone=1        -   0.2≥VO₂<0.3, Zone=2        -   0.3≥VO₂<0.55, Zone=3        -   0.55≥VO₂<0.65, Zone=4        -   0.65≥VO₂, Zone=5    -   If AVO₂≥0.35 ml/kg/sec    -   Compute Zones as such:        -   if instantaneous VO₂<0.15, Zone=0/-- (Not in a real zone)        -   0.15≥VO₂<0.35, Zone=1        -   0.35≥VO₂<0.6, Zone=2        -   0.6≥VO₂<0.7, Zone=3        -   0.7≥VO₂<0.85, Zone=4    -   0.85≥VO₂, Zone=5

For an Exercise Bike:

-   -   Compute Zones as such by INSTANTANEOUS VO₂ for each control set:        -   if instantaneous VO₂<0.2, Zone=0/-- (Not in a real zone)        -   0.2≥VO₂<0.35, Zone=1        -   0.35≥VO₂<0.45, Zone=2        -   0.45≥VO₂<0.6, Zone=3        -   0.6≥VO₂<0.7, Zone=4        -   0.7≥VO₂, Zone=5

For an Elliptical Machine:

-   -   Compute Zones as such by INSTANTANEOUS VO₂ for each control set:        -   if instantaneous VO₂<0.2, Zone=0/-- (Not in a real zone)        -   0.2≥VO₂<0.3, Zone=1        -   0.3≥VO₂<0.4, Zone=2        -   0.4≥VO₂<0.5, Zone=3        -   0.5≥VO₂<0.6, Zone=4        -   0.6≥VO₂, Zone=5

For a Rower Machine:

-   -   Compute Zones as such by INSTANTANEOUS VO₂ for each control set:        -   if instantaneous VO₂<0.2, Zone=0/-- (Not in a real zone)        -   0.2≥VO₂<0.35, Zone=1        -   0.35≥VO₂<0.45, Zone=2        -   0.45≥VO₂<0.6, Zone=3        -   0.6≥VO₂<0.7, Zone=4        -   0.7≥VO₂, Zone=5            In some embodiments, these zone calculations may be used to            estimates initial zones for a user, and then these initial            estimated zones may be reviewed and fined tuned by a fitness            professional. Further, in some embodiments, other zone            calculations may be employed other than the zone            calculations listed above.

Next, a zone may be assigned for cross-training sections as well. Forexample, workouts that have cross-training may have calorie multipliermetadata for sections of the workouts that have cross training. Forthese sections, the VO₂ may be computed accordingly. In thesesituations, the following calculations may be employed:

-   -   1. Compute VO₂ for interval with metadata.    -   2. Multiply that VO₂ by the calorie multiplier (just between the        set time codes).    -   3. Use that to assign a zone.

Next, zone smoothing may be added according to the following formulas:If Z ₀ =Z ₂ AND D<20AND |VO2_(z0)−VO2_(z)|<0.1,Z=Z ₀If Z ₀ =Z ₂ AND D≥20, Z=Z (no change)If Z ₀ ≠Z ₂ , Z=Z (no change)If |VO2_(z0)−VO2_(z)|>0.1, Z=Z (no change)

-   -   Where:        -   Z₀=Previous Zone        -   Z₂=Subsequent Zone        -   D=Zone Duration

Next, corrective zone measures may be added according to the followingformulas:AZ=if(Z ₀ −Z>1,1,0)+Z

-   -   If zone of previous control set is more than one zone greater        than the current calculated zone, add 1 to the zone    -   If not, use calculated zone.    -   Where:        -   AZ=Adjusted Zone        -   Z=Current Zone        -   PZ=Programmed Zone        -   PZ₀=Previous Programmed Zone        -   t=seconds after a programmed zone change            -   t₀=time of zone change            -   t₅=5 seconds after a zone change        -   T=seconds into the workout

In some embodiments, in the context of a video workout programconfigured to be performed on a treadmill, an exercise bike, anelliptical machine, or a rower machine, the following zone evaluationmay be performed to determine if the user is in the correct zone and todetermine if a zone change is needed. This may be accomplished accordingto the following formula:PZ−AZ=0

-   -   No action        PZ−AZ>0    -   Potential to increase difficulty level        PZ−AZ<0    -   Potential to decrease difficulty level

Where:

-   -   PZ=Programmed Zone (part of control set)    -   AZ=Actual Zone (based on actual user HR)        Continuing with the example context of a video workout program        configured to be performed on a treadmill, an exercise bike, an        elliptical machine, or a rower machine, there may be at least        two different situations in which difficulty levels would need        to be adjusted for a user. The first situation is when the user        drifts out of the correct zone. The second situation is when the        workout itself changes zones. Each of these two situations will        now be explored.

Turning to the first situation in which the user drifts out of thecorrect zone, this situation may apply if a user experienced a zonechange and made it to the correct zone but later is no longer in thecorrect zone. If the user never made it to the correct zone, or was onlyin the correct zone for less than a threshold time period (e.g., 5seconds or 10 seconds), then the second situation criteria may beapplied instead of the first situation criteria. The first situation mayoccur due to overcorrecting heart rate zones, or due to heart rate driftwhich is a phenomenon where, even at the same workload, a user's heartrate will steadily rise as they fatigue. In this first situation, thefollowing sets of criteria may be employed, which correspond to atreadmill, an exercise bike, an elliptical machine, and a rower machine:

For a Treadmill:

-   -   Criteria Set 1:        -   If programmed zone lasts >25 sec        -   If user was in the correct zone for >5 sec consecutively        -   If >10 seconds remain in that programmed zone        -   If user is not in the correct zone        -   Then take Action 1: Immediately change level up or down if            they leave the correct zone. (Only allow scale down event in            first 180 seconds of workout, and 180 seconds following a            pause event)    -   Criteria Set 2:        -   If T>180        -   If <10 seconds remain in that programmed zone        -   If user was in the correct zone for >5 sec consecutively        -   If user is not in the correct zone        -   Then take Action 2: Evaluate again after zone changes. (Do            nothing)    -   Criteria Set 3:        -   If T>180        -   If programmed zone lasts <25 sec        -   If user was in the correct zone for >5 sec consecutively        -   If user is not in the correct zone        -   Then take Action 3: Evaluate again after zone changes (Do            nothing)    -   Criteria Set 4:        -   If T>180        -   If user was in the correct zone for <5 sec consecutively        -   If user is not in the correct zone        -   Then take Action 4: Follow protocol for zone change    -   Criteria Set 5:        -   If T>180        -   If user is in the correct zone            -   If between t_(x), t_(x+10), 0<Δ HR<4 BPM            -   If between t_(x+10), t_(x+20), 0<Δ HR<4 BPM        -   User is still in correct zone        -   Then take Action 5: Immediately scale down    -   Criteria Set 6:        -   If T>180        -   If user is in the correct zone            -   If between t_(x), t_(x+10), Δ HR<−4 BPM            -   If between t_(x+10), t_(x+20), Δ HR<−4 BPM            -   User is still in correct zone            -   Then take Action 6: Immediately scale up    -   For an Exercise Bike or an Elliptical Machine (RPM) or a Rower        machine (SPM):        -   Criteria Set 1:            -   If programmed zone lasts >25 sec            -   If user was in the correct zone for >5 sec consecutively            -   If >10 seconds remain in that programmed zone            -   If user is no longer in the correct zone            -   If user revolutions per minute (RPM) is no more than 15                RPM less than programmed RPM/user strokes per minutes                (SPM) is no more than 5 SPM less than programmed SPM            -   Then take Action 1: Immediately change level up or down                if they leave the correct zone (Only allow scale down                event in first 180 seconds of workout, and 180 seconds                following a pause event)    -   Criteria Set 2:        -   If programmed zone lasts >25 sec        -   If user was in the correct zone for >5 sec consecutively        -   If >10 seconds remain in that programmed zone        -   If user is no longer in the correct zone        -   If user RPM is below prescribed RPM by more than 15 RPM/user        -   SPM is below prescribed SPM by more than 5 SPM        -   Then take Action 1: Send message to increase RPM/SPM and            evaluate again after zone changes (Do nothing)    -   Criteria Set 3:        -   If T>180        -   If <10 seconds remain in that programmed zone        -   If user was in the correct zone for >5 sec consecutively        -   If user is no longer in the correct zone        -   Then take Action 2: Evaluate again after zone changes (Do            nothing)    -   Criteria Set 4:        -   If T>180        -   If programmed zone lasts <25 sec        -   If user was in the correct zone for >5 sec consecutively        -   If user is no longer in the correct zone        -   Then take Action 3: Evaluate again after zone changes (Do            nothing)    -   Criteria Set 5:        -   If T>180        -   If user was in the correct zone for <5 sec consecutively        -   If user is no longer in the correct zone        -   Then take Action 4: Follow protocol for new zone

Turning now to the second situation in which the workout itself changeszones, this situation may apply each time that a video workout programtransitions from one zone to another during a workout. In someembodiments, the heart rates of the user during an initial time periodafter the change to a new zone (e.g., the first five seconds from t₀-t₅,or the first ten seconds from t₀-t₁₀) may be thrown out to allow for theheart rate of the user to react to a corresponding change in difficultylevel. Oftentimes a peak heart rate will be seen in the first fewseconds (e.g., the first five seconds, or the first 10 seconds) of therecovery period, and therefore it may be advantageous to throw out thefirst few seconds in order to avoid this peak heart rate frominfluencing changes in the difficulty level of the workout. Therefore,where the first five or ten seconds are thrown out, and the evaluationperiod is ten second, no scaling changes may take place for at leastfifteen or twenty seconds after a zone change and/or a scale event. Insome embodiments, the first fifteen seconds after a scale up event or azone increase may be thrown out. In some embodiments, a slope of theuser's heart rate may be evaluated every 10 seconds, and theappropriateness of scaling of the difficulty level may then be evaluatedup to every 20 seconds. In this second situation, the following sets ofcriteria may be employed, which correspond to a treadmill, an exercisebike, an elliptical machine, and a rower machine:

-   -   For a Treadmill:        -   Criteria Set 1:            -   If T>180            -   If PZ−PZ₀=1            -   If programmed zone lasts >25 sec            -   If between t_(x), t_(x+10), 0<Δ HR<4 BPM (starting at                t₅, t₁₅)            -   If HR is below target zone            -   If >5 seconds remain in that programmed zone            -   If user is not yet in the correct zone (and wasn't in                the correct zone for at least 5 sec) (their HR is still                too low)            -   Then take Action 1: Immediately change level up    -   Criteria Set 2:        -   If PZ−PZ₀=−1        -   If programmed zone lasts >25 sec        -   If between t_(x), t_(x+10), −4<Δ HR≤−2 BPM (starting at t₅,            t₁₅)        -   If HR is above target zone        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (and wasn't in the            correct zone for at least 5 sec) (their HR is still too            high)        -   Then take Action 2: Immediately change level down    -   Criteria Set 3:        -   If PZ−PZ₀=−1        -   If programmed zone lasts >25 sec        -   If between t_(x), t_(x+10), −2<Δ HR<0 BPM (starting at t₅,            t₁₅)        -   If HR is above target zone        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (and wasn't in the            correct zone for at least 5 sec) (their HR is still too            high)        -   Then take Action 3: Immediately change two levels down    -   Criteria Set 4:        -   If T>180        -   If PZ−PZ₀≥2        -   If programmed zone lasts >25 sec        -   If HR is below target zone        -   If between t_(x), t_(x+10), 0<Δ HR<5 BPM (starting at t₅,            t₁₅)        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (and wasn't in the            correct zone for at least 5 sec) (their HR is still too low)        -   Then take Action 4: Immediately change level up    -   Criteria Set 5:        -   If PZ−PZ₀<−2        -   If programmed zone lasts >25 sec        -   If between t_(x), t_(x+10), −5<ΔHR≤−3 BPM (starting at t₅,            t₁₅)        -   If HR is above target zone        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (and wasn't in the            correct zone for at least 5 sec) (their HR is still too            high)        -   Then take Action 5: Immediately change level down    -   Criteria Set 6:        -   If PZ−PZ₀<−2        -   If programmed zone lasts ≥25 sec        -   If between t_(x), t_(x+10), −3<ΔHR≤0 BPM (starting at t₅,            t₁₅)        -   If HR is above target zone        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (and wasn't in the            correct zone for at least 5 sec)(their HR is still too high)        -   Then take Action 6: Immediately change 2 levels down    -   Criteria Set 7:        -   If programmed zone lasts >25 sec        -   If >5 seconds remain in that programmed zone        -   If user is not in the correct zone        -   Then take Action 7: Evaluate again after zone changes (Do            nothing)    -   Criteria Set 8:        -   If T>180        -   If PZ−PZ₀=1        -   If programmed zone lasts >25 sec        -   If A HR between t_(x), t_(x+10)≥4 BPM        -   If HR is below target zone        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (their HR is still            too low)        -   Then take Action 8: Keep evaluating the rolling Δ HR to see            if change is necessary (Do nothing)    -   Criteria Set 9:        -   If T>180        -   If PZ−PZ₀=1        -   If programmed zone lasts >25 sec        -   If HR is above target zone        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (their HR is still            too low)        -   Then take Action 9: Immediately scale workout down    -   Criteria Set 10:        -   If T>180        -   If PZ−PZ₀=−1        -   If programmed zone lasts >25 sec        -   If Δ HR between t_(x), t_(x+10)≤−4 BPM        -   If HR is above target zone        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (their HR is still            too high)        -   Then take Action 10: Keep evaluating the rolling Δ HR to see            if change is necessary (Do nothing)    -   Criteria Set 11:        -   If T>180        -   If PZ−PZ₀=−1        -   If programmed zone lasts >25 sec        -   If HR is below target zone        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (their HR is still            too low)        -   Then take Action 11: Immediately scale workout up    -   Criteria Set 12:        -   If T>180        -   If PZ−PZ₀≥2        -   If programmed zone lasts >25 sec        -   If Δ HR between t_(x), t_(x+10)≥5 BPM        -   If HR is below target zone        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (their HR is still            too low)        -   Then take Action 12: Keep evaluating the rolling Δ HR to see            if change is necessary (Do nothing)    -   Criteria Set 13:        -   If T>180        -   If PZ−PZ₀≥2        -   If programmed zone lasts >25 sec        -   If HR is above target zone        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (their HR is still            too high)        -   Then take Action 13: Immediately scale workout down    -   Criteria Set 14:        -   If T>180        -   If PZ−PZ₀≤−2        -   If programmed zone lasts >25 sec        -   If Δ HR between t_(x), t_(x+10)≤−5 BPM        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (their HR is still            too high)        -   Then take Action 14: Keep evaluating the rolling Δ HR to see            if change is necessary    -   Criteria Set 15:        -   If T>180        -   If PZ−PZ₀≤−2        -   If programmed zone lasts >25 sec        -   If HR is below target zone        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (their HR is still            too low)        -   Then take Action 15: Immediately scale workout up    -   Criteria Set 16:        -   If user is in the correct zone        -   Then take Action 16: Do nothing    -   Criteria Set 17:        -   If T≤180        -   Then take Action 17: Follow logic for scale down event. If            scale up event is triggered, ignore.

For an Exercise Bike or an Elliptical Machine (RPM) or a Rower machine(SPM):

-   -   Criteria Set 1:        -   If T>180        -   If PZ−PZ₀=1        -   If programmed zone lasts >25 sec        -   If between t_(x), t_(x+10), 0<Δ HR<4 BPM (starting at t₅,            t₁₅)        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (and wasn't in the            correct zone for at least 5 sec) (their HR is still too low)        -   If user RPM is no more than 15 RPM less than programmed            RPM/SPM is no more than 4 SPM less than programmed SPM (can            be above)        -   Then take Action 1: Immediately change level up    -   Criteria Set 2:        -   If T>180        -   If PZ−PZ₀=1        -   If programmed zone lasts >25 sec        -   If between t_(x), t_(x+10), 0<Δ HR<4 BPM (starting at t₅,            t₁₅)        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (and wasn't in the            correct zone for at least 5 sec) (their HR is still too low)        -   If user RPM is below prescribed RPM by more than 15 RPM/user            SPM is below prescribed SPM by more than 4 SPM        -   Then take Action 2: Evaluate again after zone changes (Do            nothing)    -   Criteria Set 3:        -   If PZ−PZ₀=−1        -   If programmed zone lasts >25 sec        -   If between t_(x), t_(x+10), −4<Δ HR<0 BPM (starting at t₅,            t₁₅)        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (and wasn't in the            correct zone for at least 5 sec) (their HR is still too            high)        -   Then take Action 3: Immediately change level down    -   Criteria Set 4:        -   If T>180        -   If PZ−PZ₀≥2        -   If programmed zone lasts >25 sec        -   If between t_(x), t_(x+10), 0<Δ HR<5 BPM (starting at t₅,            t₁₅)        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (and wasn't in the            correct zone for at least 5 sec) (their HR is still too low)        -   If user RPM is no more than 15 RPM less than programmed            RPM/SPM is no more than 5 SPM less than programmed SPM        -   Then take Action 4: Immediately change level up    -   Criteria Set 5:        -   If T>180        -   If PZ−PZ₀≥2        -   If programmed zone lasts >25 sec        -   If between t_(x), t_(x+10), 0<Δ HR<5 BPM (starting at t₅,            t₁₅)        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (and wasn't in the            correct zone for at least 5 sec) (their HR is still too low)        -   If user RPM is below prescribed RPM by more than 15 RPM/user            SPM is below prescribed SPM by more than 4 SPM        -   Then take Action 5: Evaluate again after zone changes (Do            nothing)    -   Criteria Set 6:        -   If PZ−PZ₀≤−2        -   If programmed zone lasts >25 sec        -   If between t_(x), t_(x+10), −5<Δ HR<0 BPM (starting at t₅,            t₁₅)        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (and wasn't in the            correct zone for at least 5 sec) (their HR is still too            high)        -   Then take Action 6: Immediately change level down    -   Criteria Set 7:        -   If programmed zone lasts <25 sec        -   If >5 seconds remain in that programmed zone        -   If user is not in the correct zone        -   Then take Action 7: Evaluate again after zone changes (Do            nothing)    -   Criteria Set 8:        -   If T>180        -   If PZ−PZ₀=1        -   If programmed zone lasts >25 sec        -   If |Δ HRI between t_(x), t_(x+10)≥4 BPM        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (their HR is still            too low)        -   Then take Action 8: Keep evaluating the rolling Δ HR to see            if change is necessary (Do nothing)    -   Criteria Set 9:        -   If T>180        -   If PZ−PZ₀=−1        -   If programmed zone lasts >25 sec        -   If Δ HR between t_(x), t_(x+10)≤−4 BPM        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (their HR is still            too high)        -   Then take Action 9: Keep evaluating the rollin-g Δ HR to see            if change is necessary (Do nothing)    -   Criteria Set 10:        -   If T>180        -   If PZ−PZ₀≥2        -   If programmed zone lasts >25 sec        -   If Δ HR between t_(x), t_(x+10)≥5 BPM        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (their HR is still            too low)        -   Then take Action 10: Keep evaluating the rolling Δ HR to see            if change is necessary    -   Criteria Set 11:        -   If T>180        -   If PZ−PZ₀≤−2        -   If programmed zone lasts >25 sec        -   If |Δ HRI between t_(x), t_(x+10)≤−5 BPM        -   If >5 seconds remain in that programmed zone        -   If user is not yet in the correct zone (their HR is still            too high)        -   Then take Action 11: Keep evaluating the rolling Δ HR to see            if change is necessary    -   Criteria Set 12:        -   If user is in the correct zone        -   Then take Action 12: Do nothing.    -   Criteria Set 13:        -   If T≤180        -   Take Action 13: Follow logic for scale down event. If scale            up event is triggered, ignore.

In some embodiments, the foregoing criteria may follow variousguidelines with regard to starting a new video workout program and/orpausing a video workout program. These guidelines may include thefollowing guidelines:

-   -   1. DO NOT scale up a workout in the first 180 seconds in order        to allow a user's heart rate to increase on its own. Scaling in        the first 180 seconds would likely overshoot the target.    -   2. DO NOT scale up a workout in the 180 seconds following a        pause event in order to account for the likelihood that, when a        user pauses the workout, they are likely going to have their        heart rate drop due to the recovery.    -   3. DO allow scale down events to happen in the first 180 seconds        of the workout in order to account for a warmup that is too        challenging for the user.    -   4. DO allow scale down events to happen in the 180 seconds        following a pause event.    -   5. DO NOT scale up for 60 seconds after a cross training        section. A cross training section may have metadata with a        calorie multiplier for that section.    -   6. DO NOT scale during a cross training section. A cross        training section may have metadata with a calorie multiplier for        that section.    -   7. DO NOT scale up for 60 seconds (for a treadmill) or 30        seconds (for an exercise bike, an elliptical machine, or a rower        machine) after the dynamic scaling based on heart rate        monitoring has been toggled back on by a user (after the smart        scaling had previously been toggled off by a user, in some cases        by the user overriding a setting).    -   8. DO NOT scale when last scale up event <25 seconds ago.    -   9. DO NOT scale when last scale down event <20 seconds ago.    -   10. DO NOT scale when a programmed zone increase <25 seconds        ago.    -   11. DO NOT scale when a programmed zone decrease <20 seconds        ago.    -   12. DO NOT scale if <5 seconds remains in a zone, and user is        and was not in the zone.    -   13. DO NOT scale if <10 seconds remain in a zone, and user was        in the zone (but isn't anymore).    -   14. DO NOT scale if PZ<25 seconds.    -   15. DO NOT scale if user pressed follow workout <60 seconds ago        and HR is below PZ.    -   16. DO NOT scale if cross training ended <60 seconds ago and HR        is below PZ.    -   17. DO NOT scale if workout is a cycling or elliptical workout        and RPM values are invalid.    -   18. DO NOT scale if workout is a rowing workout and SPM values        are invalid.    -   19. DO NOT scale if HR data is invalid.    -   20. DO NOT scale when levels are the same (example: when speed        is at 1 mph, or at +6 to +12 walking speeds).    -   21. DO NOT scale up when equipment limits have been reached and        HR is below the PZ.    -   22. DO NOT scale if a user is at a level that is maxing out the        governor and HR is below PZ.    -   23. DO NOT scale if every data point in the array of last 10        seconds is the same value.    -   24. DO NOT scale if a user has changed controls in the last 60        seconds.    -   25. DO NOT scale when a user hops off of the running belt of a        treadmill and hops onto to the side rails of the treadmill        (e.g., to prevent a runaway treadmill) which may be detected in        a number of ways including, but not limited to:        -   Criteria Set 1:            -   If last zone change was not a zone decrease            -   If no scale down event for the last 30 seconds            -   If Δ HR≤−4 bpm            -   Then perform Actions 1: Do not send any scale up events,                Pause workout, and Resume workout 2 levels lower        -   Criteria Set 2:            -   If last zone change was a zone decrease            -   If zone decrease was at least 120 seconds ago            -   If no scale down event for 30 seconds            -   If Δ HR<−4 bpm            -   Then perform Actions 2: Do not send any scale up events,                Pause workout, and Resume workout at previous level        -   Criteria Set 3:            -   If there was a scale down event within 30 seconds, OR            -   If there was a zone decrease within 120 seconds (and no                other changes since),        -   OR            -   If HR isn't dropping faster than 4 BPM per 10 seconds            -   Then perform Action 3: Do nothing

In some embodiments, outliers in heart rate data may be excluded inorder to avoid dynamic scaling based on heart rate data that is likelyinvalid. For example, the following steps may be followed to excludeoutlier heart rate data:

-   -   Step 1: Is the value super wild?        -   If HR>250, then exclude        -   If HR<40, then exclude        -   If 40<HR<250, then use as part of data set in step 2        -   Note: Null values are treated like a 0 and are automatically            excluded from the data set.    -   Step 2: Is the value an outlier based on other data points        around it?        -   With the remaining values, take the median of the previous            10 seconds (or the array of the 10 seconds of data passed at            the same time)        -   If |HR−M|>20, exclude.    -   Step 3: If <2 values are excluded, they are ignored when it        comes to finding the A for scale events, OR if >2 values are        excluded, do not trigger any scale event because it can be        assumed that the data is bad.    -   Where:        -   HR=Instantaneous HR value        -   M=Median of 10 second data set

In one example that follows these steps for excluding outliers in heartrate data, with the following ten heart rate values:{123,123,146,125,122,122,121,121,121,120} and M=122, the followingresults may be obtained:

HR₁=120, |120−122|=2, include

HR₂=121, |121−122|=1, include

HR₃=122, |122−122|=0, include

HR₄=123, |123−122|=1, include

HR₅=146, |146−122|=24, exclude

In accordance with common practice, the various features illustrated inthe drawings may not be drawn to scale. The illustrations presented inthe present disclosure are not meant to be actual views of anyparticular apparatus (e.g., device, system, etc.) or method, but aremerely example representations that are employed to describe variousembodiments of the disclosure. Accordingly, the dimensions of thevarious features may be arbitrarily expanded or reduced for clarity. Inaddition, some of the drawings may be simplified for clarity. Thus, thedrawings may not depict all of the components of a given apparatus(e.g., device) or all operations of a particular method.

Terms used herein and especially in the appended claims (e.g., bodies ofthe appended claims) are generally intended as “open” terms (e.g., theterm “including” should be interpreted as “including, but not limitedto,” the term “having” should be interpreted as “having at least,” theterm “includes” should be interpreted as “includes, but is not limitedto,” etc.).

Additionally, if a specific number of an introduced claim recitation isintended, such an intent will be explicitly recited in the claim, and inthe absence of such recitation no such intent is present. For example,as an aid to understanding, the following appended claims may containusage of the introductory phrases “at least one” and “one or more” tointroduce claim recitations. However, the use of such phrases should notbe construed to imply that the introduction of a claim recitation by theindefinite articles “a” or “an” limits any particular claim containingsuch introduced claim recitation to embodiments containing only one suchrecitation, even when the same claim includes the introductory phrases“one or more” or “at least one” and indefinite articles such as “a” or“an” (e.g., “a” and/or “an” should be interpreted to mean “at least one”or “one or more”); the same holds true for the use of definite articlesused to introduce claim recitations.

In addition, even if a specific number of an introduced claim recitationis explicitly recited, it is understood that such recitation should beinterpreted to mean at least the recited number (e.g., the barerecitation of “two recitations,” without other modifiers, means at leasttwo recitations, or two or more recitations). Furthermore, in thoseinstances where a convention analogous to “at least one of A, B, and C,etc.” or “one or more of A, B, and C, etc.” is used, in general such aconstruction is intended to include A alone, B alone, C alone, A and Btogether, A and C together, B and C together, or A, B, and C together,etc. For example, the use of the term “and/or” is intended to beconstrued in this manner.

Further, any disjunctive word or phrase presenting two or morealternative terms, whether in the summary, detailed description, claims,or drawings, should be understood to contemplate the possibilities ofincluding one of the terms, either of the terms, or both terms. Forexample, the phrase “A or B” should be understood to include thepossibilities of “A” or “B” or “A and B.”

Additionally, the use of the terms “first,” “second,” “third,” etc., arenot necessarily used herein to connote a specific order or number ofelements. Generally, the terms “first,” “second,” “third,” etc., areused to distinguish between different elements as generic identifiers.Absence a showing that the terms “first,” “second,” “third,” etc.,connote a specific order, these terms should not be understood toconnote a specific order. Furthermore, absence a showing that the terms“first,” “second,” “third,” etc., connote a specific number of elements,these terms should not be understood to connote a specific number ofelements. For example, a first widget may be described as having a firstside and a second widget may be described as having a second side. Theuse of the term “second side” with respect to the second widget may beto distinguish such side of the second widget from the “first side” ofthe first widget and not to connote that the second widget has twosides.

The foregoing description, for purpose of explanation, has beendescribed with reference to specific embodiments. However, theillustrative discussions above are not intended to be exhaustive or tolimit the invention as claimed to the precise forms disclosed. Manymodifications and variations are possible in view of the aboveteachings. The embodiments were chosen and described to explainpractical applications, to thereby enable others skilled in the art toutilize the invention as claimed and various embodiments with variousmodifications as may be suited to the particular use contemplated.

The invention claimed is:
 1. A method of producing a workout video tocontrol a stationary exercise machine, the method comprising: capturing,by a videographer at a first remote location that is remote from thestationary exercise machine, video that includes a depiction of atrainer performing a workout; simultaneously with the capturing,automatically gathering, by one or more sensors, data parameterscorresponding to the trainer while performing the workout; and encoding,at a second remote location that is remote from the stationary exercisemachine, exercise machine control commands corresponding to the dataparameters and that are configured to control one or more moveablemembers of the stationary exercise machine, with changes in the exercisemachine control commands synchronized with associated changes in theworkout depicted in the video.
 2. The method of claim 1, wherein thefirst remote location and the second remote location are differentremote locations.
 3. The method of claim 1, wherein the encoding isperformed automatically at the second remote location.
 4. The method ofclaim 1, wherein: the first remote location is an outdoor remotelocation; the videographer captures the video using a video camerapointed at the trainer while traveling with the trainer while thetrainer performs the workout; and the video camera includesstabilization capabilities to avoid at least some shakiness in thevideo.
 5. The method of claim 4, wherein: the video camera is mounted onthe torso of the videographer; the videographer points the video cameraat the trainer by pointing the torso of the videographer at the trainer;and the videographer captures the video while traveling on a firstbicycle with the trainer while the trainer performs the workout on asecond bicycle.
 6. The method of claim 4, wherein: the video camera isheld by a hand of the videographer; the videographer points the videocamera at the trainer by the hand of the videographer at the trainer;and the videographer captures the video while traveling on foot with thetrainer while the trainer performs the workout on foot.
 7. The method ofclaim 1, wherein the encoding, at the second remote location, ofexercise machine control commands includes encoding, at the secondremote location, the exercise machine control commands in a subtitlestream of the video.
 8. The method of claim 1, wherein the encoding isperformed simultaneously with the capturing.
 9. The method of claim 1,wherein the encoding is performed by a producer at the second remotelocation.
 10. A method of producing a workout video to control astationary exercise machine, the method comprising: capturing, by avideographer at a first remote location that is remote from thestationary exercise machine, video that includes a depiction of atrainer performing a workout; simultaneously with the capturing,automatically gathering, by one or more sensors, data parametersincluding speeds of the trainer while performing the workout and/orincline percentages of the trainer while performing the workout; andencoding, at a second remote location that is remote from the stationaryexercise machine, exercise machine control commands corresponding to thedata parameters and that are configured to control one or more moveablemembers of the stationary exercise machine, with changes in the exercisemachine control commands synchronized with associated changes in theworkout depicted in the video.
 11. The method claim 10, wherein: thestationary exercise machine comprises a treadmill; the one or moremoveable members include a running belt; the exercise machine controlcommands are configured to control speeds of the running belt to mimicthe speeds of the trainer while performing the workout; the one or moremoveable members further include a running deck; and the exercisemachine control commands are further configured to control inclinepercentages of the running deck to mimic the incline percentages of thetrainer while performing the workout.
 12. The method of claim 10,wherein: the stationary exercise machine comprises an exercise bike; theone or more moveable members include pedals; and the exercise machinecontrol commands are configured to control a resistance of the pedals.13. The method claim 12, wherein: the one or more moveable membersfurther include a frame; and the exercise machine control commands arefurther configured to control incline percentages of the frame to mimicthe incline percentages of the trainer while performing the workout. 14.The method of claim 10, wherein: the stationary exercise machinecomprises an elliptical machine; the one or more moveable membersinclude foot rails and handles; and the exercise machine controlcommands are configured to control a resistance of the foot rails andthe handles.
 15. The method of claim 14, wherein: the one or moremoveable members further include a frame; and the exercise machinecontrol commands are further configured to control incline percentagesof the frame to mimic the incline percentages of the trainer whileperforming the workout.
 16. A method of producing a workout video tocontrol a stationary exercise machine, the method comprising: capturing,by a videographer at a first remote location that is remote from thestationary exercise machine, video that includes a depiction of atrainer performing a live workout; simultaneously with the capturing,automatically gathering, by one or more sensors, data parametersincluding speed of the trainer while performing the live workout and/orincline percentages of the trainer while performing the live workout;simultaneously with the capturing, encoding, at a second remote locationthat is remote from the stationary exercise machine, exercise machinecontrol commands corresponding to the data parameters, with changes inthe exercise machine control commands synchronized with associatedchanges in the live workout depicted in the video; transmitting live,from the second remote location to a local location that is local to thestationary exercise machine, the video and the exercise machine controlcommands; automatically decoding, by a processor at the local location,the exercise machine control commands; automatically presenting, by theprocessor at the local location, the video; and simultaneously with thepresenting, automatically executing, by the processor at the locallocation, the exercise machine control commands to continuously controlone or more moveable members of the stationary exercise machine usingthe exercise machine control commands while maintaining synchronizationbetween the depiction of the trainer performing the live workout in thevideo and the corresponding exercise machine control commands.
 17. Themethod as recited in claim 16, wherein: the first remote location is anoutdoor remote location; the videographer captures the video using avideo camera pointed at the trainer while traveling with the trainerwhile the trainer performs the live workout; and the video cameraincludes stabilization capabilities to avoid at least some shakiness inthe video.
 18. The method as recited in claim 17, wherein: the videocamera is held by a hand of the videographer; the videographer pointsthe video camera at the trainer by the hand of the videographer at thetrainer; the videographer captures the video while traveling on footwith the trainer while the trainer performs the live workout on foot;the stationary exercise machine comprises a treadmill; the one or moremoveable members include a running belt; the exercise machine controlcommands are configured to control speeds of the running belt to mimicthe speeds of the trainer while performing the live workout; the one ormore moveable members further include a running deck; and the exercisemachine control commands are further configured to control inclinepercentages of the running deck to mimic the incline percentages of thetrainer while performing the workout.
 19. The method as recited in claim17, wherein: the video camera is mounted on the torso of thevideographer; the videographer points the video camera at the trainer bypointing the torso of the videographer at the trainer; the videographercaptures the video while traveling on a first bicycle with the trainerwhile the trainer performs the workout on a second bicycle; thestationary exercise machine comprises an exercise bike; the one or moremoveable members include pedals; and the exercise machine controlcommands are configured to control a resistance of the pedals.
 20. Themethod of claim 17, wherein: the video camera is held by a hand of thevideographer; the videographer points the video camera at the trainer bythe hand of the videographer at the trainer; the videographer capturesthe video while traveling on foot with the trainer while the trainerperforms the workout on foot; the stationary exercise machine comprisesan elliptical machine; the one or more moveable members include footrails and handles; and the exercise machine control commands areconfigured to control a resistance of the foot rails and the handles.